<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
import java.util.*;
public class Main{
	public static String clockwise(Vector v1, Vector v2){
		long cross = v1.x * v2.y - v1.y * v2.x;
		long value = v1.x * v2.x + v1.y * v2.y;
		long len1 = v1.x * v1.x + v1.y * v1.y;
		long len2 = v2.x * v2.x + v2.y * v2.y;
		if(cross == 0L){
			if(value < 0L)
				return "ONLINE_BACK";
			else if(len1 < len2)
				return "ONLINE_FRONT";
			else
				return "ON_SEGMENT";
		}
		else if(cross > 0L){
			return "COUNTER_CLOCKWISE";
		}
		else{
			return "CLOCKWISE";
		}
	}
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		Point p0 = new Point(sc.nextLong(),sc.nextLong());
		Point p1 = new Point(sc.nextLong(),sc.nextLong());
		Vector v1 = new Vector(p0,p1);
		int q = sc.nextInt();
		for(int i = 0 ; i < q ; i++){
			Point p2 = new Point(sc.nextLong(),sc.nextLong());
			Vector v2 = new Vector(p0,p2);
			System.out.println(clockwise(v1,v2));
		}
	}
}
class Point{
    long x;
    long y;
    Point(long x, long y){
        this.x = x;
        this.y = y;
    }
}
class Vector{
        long x;
	long y;
	Vector(Point ps, Point pg){
		x = pg.x - ps.x;
		y = pg.y - ps.y;
	}
}
