<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 ll long long
#define INF 1000000005
#define MOD 1000000007
#define EPS 1e-10
#define rep(i,n) for(int i=0;i<n;++i)

using namespace std;

typedef pair<int,int>P;
typedef pair<ll,ll>pll;

const int MAX_N = 100005;

int Q;

void ccw(pll p0,pll p1,pll p2)
{
	pll a = pll(p1.first - p0.first,p1.second - p0.second);
	pll b = pll(p2.first - p0.first,p2.second - p0.second);
	ll dot = a.first*b.first+a.second*b.second;
	ll cross = a.first*b.second - a.second*b.first;
	ll na = a.first*a.first+a.second*a.second;
	ll nb = b.first*b.first+b.second*b.second;
	if(cross > EPS){
		printf("COUNTER_CLOCKWISE\n");
	}else if(cross < -EPS){
		printf("CLOCKWISE\n");
	}else if(dot < -EPS){
		printf("ONLINE_BACK\n");
	}else if(na < nb){
		printf("ONLINE_FRONT\n");
	}else{
		printf("ON_SEGMENT\n");
	}
}

int main()
{
	pll p0,p1,p2;
	scanf("%lld%lld%lld%lld",&p0.first,&p0.second,&p1.first,&p1.second);
	scanf("%d",&Q);
	rep(i,Q){
		scanf("%lld%lld",&p2.first,&p2.second);
		ccw(p0,p1,p2);
	}
	return 0;
}