<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<stdio.h>
#include<iostream>
#include<fstream>
#include<iomanip>
#include<float.h>
#include<math.h>
using namespace std;

template <class T>
class _Point{
public:
	T x;
	T y;
	_Point(){}
	_Point(T _x, T _y) :x(_x), y(_y){}
	_Point(const _Point & v) :x(v.x), y(v.y){}

	const _Point operator + (const _Point & v)
	{
		return _Point(x+v.x,y+v.y);
	}
	const _Point operator - (const _Point & v)
	{
		return _Point(x - v.x, y - v.y);
	}
	T abs() const {
		return sqrt(x*x + y*y);
	}
	_Point unit() const{
		T len = abs();
		return _Point(x / len, y / len);
	}
	T operator*(const _Point &v) const
	{
		return x * v.x + y * v.y;
	}
	const _Point operator*(const T &len) const
	{
		return _Point(len * x, len * y);
	}
};
typedef double R;
typedef _Point<R> Point;
typedef Point Vector;

int main(){
	std::istream & c_in = cin;

	Point p0, p1;
	c_in >> p0.x >> p0.y >> p1.x >> p1.y;
	Vector P10(p1 - p0);
	Vector e10(P10.unit());

	int q;
	c_in >> q;
	for (int i = 0; i < q; ++i)
	{
		Point p2;
		c_in >> p2.x >> p2.y;

		Vector P20 = p2 - p0;
		Vector e20(P20.unit());
		bool zero = P20.abs() < DBL_EPSILON*16;
		R projection = e10*e20;
		if (zero)
		{
			//(5)
			cout << "ON_SEGMENT";
		}
		else if (fabs(projection) > 1 - DBL_EPSILON * 16)
		{
			//??´???
			if (projection > 0)
			{
				if (P20.abs() <= P10.abs())
				{
					//(5)
					cout << "ON_SEGMENT";
				}
				else {
					//(4)
					cout << "ONLINE_FRONT";
				}
			}
			else
			{
				//(3)
				cout << "ONLINE_BACK";

			}
		}
		else
		{
			Vector ey(-e10.y, e10.x);
			R projection2 = ey*P20;
			if (projection2 > 0)
			{
				//???????¨??????????????????´??? (1) 
				cout << "COUNTER_CLOCKWISE";
			}
			else
			{
				//????¨??????????????????´???(2) 
				cout << "CLOCKWISE";
			}
		}
		cout << endl;

	}
}