Taxis of Kharagpur are famous for making sharp turns. You are given the coordinates where a particular taxi was on a 2-D planes at N different moments: (x1, y1), (x2, y2), ..., (xN, yN). In between these coordinates, the taxi moves on a straight line. A turn at the i-th (2 ≤ i ≤ N-1) coordinate is said to be a sharp turn if the angle by which it turns at Point B = (xi, yi) when going from coordinates A = (xi-1, yi-1) to C = (xi+1, yi+1) via (xi, yi) is greater than 45 degrees. ie. suppose you extend the line segment AB further till a point D, then the angle DBC would be greater than 45 degrees.
You have to identify whether the taxi made a sharp turn somewhere or not (Please look at Output section for details). If it made a sharp turn, also identify whether it is possible to change the coordinates at one of the N moments to make sure that the taxi doesn't make any sharp turn. Note that all the N pairs of coordinates (including the new coordinates) should be integers and distinct and should have their x and y coordinates at least 0 and at most 50.

-----Input-----
- The first line of the input contains a single integer T denoting the number of test cases. The description of T test cases follows.
- The first line of each test case contains a single integer N denoting the number of moments at which you are given the information of the taxi's coordinates.
- Each of the next N lines contains two space-separated integers xi and yi denoting the x and y coordinates of the taxi at i-th moment.

-----Output-----
- For each test case, print a single line containing two space-separated strings, either of which can be a "yes" or "no" (without quotes). If there was no sharp turn, the first string should be "yes", and if there was a sharp turn, the first string should be "no". For the second string, you should tell whether it is possible to modify at most one coordinate in such a way that taxi doesn't make a sharp turn. Note that if the first string is "yes", then the second string would always be "yes".

-----Constraints-----
- 1 ≤ T ≤ 50
- 3 ≤ N ≤ 50
- 0 ≤ xi, yi ≤ 50
- It's guaranteed that all (xi, yi) pairs are distinct.

-----Example-----
Input
5
3
0 0
1 1
2 1
3
0 0
1 0
6 1
3
0 0
1 0
1 1
4
0 0
1 0
1 1
6 1
6
0 0
1 0
1 1
2 1
2 2
3 2

Output
yes yes
yes yes
no yes
no yes
no no

-----Explanation-----
Example 1. 

You can see that taxi is never making a sharp turn.

Example 3

You can see that taxi is making a sharp turn of 90 degrees, an angle greater than 45'. However, you can change the coordinates of the third points to (2, 1) to ensure that the angle remains <= 45'.

```python

USER_FILENAME = "<user_code>"
import sys, json, builtins
import math, heapq, bisect, itertools, functools, collections, statistics, fractions, decimal, operator, array, random, re, string, os, pathlib
try:
    import resource as _res
except Exception:
    _res = None
from collections import Counter, defaultdict, deque, OrderedDict
from functools import lru_cache, reduce
from itertools import accumulate, permutations, combinations, product
from math import gcd, ceil, floor, sqrt
from decimal import Decimal
try:
    from typing import *
except Exception:
    pass
try:
    sys.setrecursionlimit(1_000_000)
except Exception:
    pass
try:
    import site as _site
    try:
        _sys_sites = _site.getsitepackages() if hasattr(_site, "getsitepackages") else []
        for _p in _sys_sites:
            if _p and _p not in sys.path:
                sys.path.append(_p)
    except Exception:
        pass
    try:
        _usp = _site.getusersitepackages()
        if isinstance(_usp, str):
            _usp = [_usp]
        for _p in _usp:
            if _p and _p not in sys.path:
                sys.path.append(_p)
    except Exception:
        pass
except Exception:
    pass

ns = {"__name__": "__main__"}
for _k, _v in list(globals().items()):
    if not _k.startswith("_"):
        ns[_k] = _v
_CODE = "import math\nimport copy\ntry:\n import psyco\n psyco.full()\nexcept ImportError:\n pass\n \ndef isSharp(ang):\n return ang > math.pi/4 + 0.00001\n \ndef unitVector(p2, p1):\n d0 = p2[0] - p1[0]\n d1 = p2[1] - p1[1]\n d = math.sqrt(d0*d0 + d1*d1)\n if d != 0:\n  return [d0/d, d1/d]\n return [0, 0]\n \ndef compVectors(P):\n V = []\n for i in range(1,len(P)):\n  v = unitVector(P[i], P[i-1])\n  if v[0] == 0 and v[1] == 0:\n   return None\n  V.append(v)\n return V\n \ndef angle(v2, v1):\n d = v2[0]*v1[0] + v2[1]*v1[1]\n if d > 1:\n  d = 1\n if d < -1:\n  d = -1\n return math.acos(d)\n \ndef compAngles(V):\n A = []\n for i in range(len(V)-1):\n  A.append(angle(V[i+1], V[i]))\n return A\n \ndef updateAngles(i, P, V, A):\n if i-1 >= 0:\n  V[i-1] = unitVector(P[i], P[i-1])\n if i+1 < len(P):\n  V[i] = unitVector(P[i+1], P[i])\n if i-2 >= 0:\n  A[i-2] = angle(V[i-1], V[i-2])\n if i-1 >= 0 and i+1 < len(P):\n  A[i-1] = angle(V[i], V[i-1])\n if i+2 < len(P):\n  A[i] = angle(V[i+1], V[i])\n \ndef checkMoves(check, P, V, A, filled):\n for i in check:\n  if i < 0 or i >= len(P):\n   break\n  x, y = P[i]\n  for j in range(51):\n   for k in range(51):\n    P[i][0] = j\n    P[i][1] = k\n    if str(P[i]) in filled:\n     continue\n    updateAngles(i, P, V, A)\n    fixed = True\n    if i-2 >= 0:\n     if isSharp(A[i-2]):\n      fixed = False\n    if i-1 >= 0 and i-1 < len(A):\n     if isSharp(A[i-1]):\n      fixed = False\n    if i < len(A):\n     if isSharp(A[i]):\n      fixed = False\n    if fixed:\n     return True\n  P[i] = [x, y]\n  updateAngles(i, P, V, A) \n return False\n    \n \ndef canFix(first, last, P, V, A, filled):\n d = last - first\n if d > 2:\n  return False\n if d == 2:\n  check = [first+2]\n if d == 1:\n  check = [first+1, first+2]\n if d == 0:\n  check = [first, first+1, first+2]\n if checkMoves(check, P, V, A, filled):\n  return True\n return False\n \nT=int(input())\nfor i in range(T):\n N=int(input())\n P=[]\n V=[]\n filled={}\n for i in range(N):\n  P.append(list(map(int,input().split())))\n  filled[str(P[i])] = 1\n V = compVectors(P)\n A = compAngles(V)\n blunt = True\n first = -1\n last = -1\n for i in range(len(A)):\n  if isSharp(A[i]):\n   blunt = False\n   last = i\n   if first < 0:\n     first = i\n if blunt:\n  print('yes yes')\n else:\n  if canFix(first, last, P, V, A, filled):\n   print('no yes')\n  else:\n   print('no no') "
_co = compile(_CODE, USER_FILENAME, "exec")
exec(_co, ns, ns)

```

Measured memory_bytes: 177884