<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>

#define rep(i, a, b) for (int i = a, i##end = b; i <= i##end; ++i)
#define per(i, a, b) for (int i = a, i##end = b; i >= i##end; --i)
#define rep0(i, a) for (int i = 0, i##end = a; i < i##end; ++i)
#define per0(i, a) for (int i = (int)a-1; ~i; --i)
#define max(a, b) ((a) > (b) ? (a) : (b))
#define min(a, b) ((a) < (b) ? (a) : (b))
#define chkmax(a, b) a = max(a, b)
#define chkmin(a, b) a = min(a, b)
#define x first
#define y second

typedef long long ll;

const double eps = 1e-10;

struct Point { double x, y; };
Point operator + (Point a, Point b) { return (Point){a.x + b.x, a.y + b.y}; }
Point operator - (Point a, Point b) { return (Point){a.x - b.x, a.y - b.y}; }
Point operator * (double k, Point a) { return (Point){k * a.x, k * a.y}; }
double dot(Point a, Point b) { return a.x * b.x + a.y * b.y; }
double cross(Point a, Point b) { return a.x * b.y - a.y * b.x; }
double disc(Point a) { return sqrt(dot(a, a)); }

Point P1, P2;
int q;

int main() {
	scanf("%lf%lf%lf%lf", &P1.x, &P1.y, &P2.x, &P2.y);
	scanf("%d", &q);
	while (q--) {
		Point P3; scanf("%lf%lf", &P3.x, &P3.y);
		Point vec1 = P2-P1, vec2 = P3-P1; double t1 = cross(vec1, vec2), t2 = dot(vec1, vec2);
		if (fabs(t1) < eps) {
			if (t2 < -eps) printf("ONLINE_BACK\n");
			else printf("%s\n", disc(vec2) < disc(vec1) + eps ? "ON_SEGMENT" : "ONLINE_FRONT");
		} else printf("%s\n", t1 > 0 ? "COUNTER_CLOCKWISE" : "CLOCKWISE");
	}
	return 0;
}
