<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;
double xp1,yp1,xp2,yp2,x,y,xp,yp,l1,r1,l2,r2,sum;
int n;
int main(){
	scanf("%lf%lf%lf%lf",&xp1,&yp1,&xp2,&yp2);
	l1=xp2-xp1;
	r1=yp2-yp1;
	scanf("%d",&n);
	for(int i=1; i<=n; i++){
		scanf("%lf%lf",&x,&y);
		l2=x-xp1;
		r2=y-yp1;
		sum=l1*r2-l2*r1;
		if(sum>0)printf("COUNTER_CLOCKWISE\n");
		else if(sum<0)printf("CLOCKWISE\n");
		     else{
		     	sum=l1*l2+r1*r2;
		     	if(sum<0)printf("ONLINE_BACK\n");
		     	else{
					if(sqrt((l1*l1)+(r1*r1))<
					   sqrt((l2*l2)+(r2*r2)))printf("ONLINE_FRONT\n");
					else printf("ON_SEGMENT\n");
				}
			 }
	}
} 
