<image>

For given three points p0, p1, p2, print


COUNTER_CLOCKWISE


if p0, p1, p2 make a counterclockwise turn (1),


CLOCKWISE


if p0, p1, p2 make a clockwise turn (2),


ONLINE_BACK


if p2 is on a line p2, p0, p1 in this order (3),


ONLINE_FRONT


if p2 is on a line p0, p1, p2 in this order (4),


ON_SEGMENT


if p2 is on a segment p0p1 (5).

Constraints

* 1 ≤ q ≤ 1000
* -10000 ≤ xi, yi ≤ 10000
* p0 and p1 are not identical.

Input


xp0 yp0 xp1 yp1
q
xp20 yp20
xp21 yp21
...
xp2q-1 yp2q-1


In the first line, integer coordinates of p0 and p1 are given. Then, q queries are given for integer coordinates of p2.

Output

For each query, print the above mentioned status.

Examples

Input

0 0 2 0
2
-1 1
-1 -1


Output

COUNTER_CLOCKWISE
CLOCKWISE


Input

0 0 2 0
3
-1 0
0 0
3 0


Output

ONLINE_BACK
ON_SEGMENT
ONLINE_FRONT
#include<bits/stdc++.h>
using namespace std;
const double EPS = 1e-8;
const double INF = 1e12;
typedef complex<double> point;
namespace std{
    bool operator < (const point& a, const point& b) {
        return real(a) != real(b) ? real(a) < real(b) : imag(a) < imag(b);
    }
}
double cross(const point& a, const point& b) {
    return imag(conj(a)*b);
}
double dot(const point& a, const point& b) {
    return real(conj(a)*b);
}

// 直線はvector<point>の型を継承
struct line : public vector<point> {
    line(const point &a, const point &b){
        push_back(a); push_back(b);
    }
};

double line_cross(const line &a, const line &b) {
    return cross(a[1] - a[0], b[1] - b[0]);
}

double line_dot(const line &a, const line &b) {
    return dot(a[1] - a[0], b[1] - b[0]);
}

int main()
{
    double x0, y0, x1, y1;
    cin >> x0 >> y0 >> x1 >> y1;
    line P1(point(x0,y0), point(x1,y1));
    int q;
    cin >> q;
    for(int i = 0; i < q; ++i) {
        double x2, y2;
        cin >> x2 >> y2;
        line P2(P1[0], point(x2,y2));
        double tmp = line_cross(P1,P2);
        if(tmp>0.0) {
            cout << "COUNTER_CLOCKWISE" << endl;
        }
        else if(tmp < 0.0) {
            cout << "CLOCKWISE" << endl;
        }
        else {
            tmp = line_dot(P1,P2);
            double p1 = line_dot(P1,P1);
            double p2 = line_dot(P2,P2);
            if(tmp < 0.0) { cout << "ONLINE_BACK" << endl; continue; }
            if(p1 < p2) { cout << "ONLINE_FRONT" << endl; continue; }
            cout << "ON_SEGMENT" << endl;
        }
    }
    return 0;
}
