Problem: You're given the centers of three equal sides of a strictly convex tetragon. Your task is to restore the initial tetragon.

Input

The first input line contains one number T — amount of tests (1 ≤ T ≤ 5·104). Each of the following T lines contains numbers x1, y1, x2, y2, x3, y3 — coordinates of different points that are the centers of three equal sides (non-negative integer numbers, not exceeding 10).

Output

For each test output two lines. If the required tetragon exists, output in the first line YES, in the second line — four pairs of numbers — coordinates of the polygon's vertices in clockwise or counter-clockwise order. Don't forget, please, that the tetragon should be strictly convex, i.e. no 3 of its points lie on one line. Output numbers with 9 characters after a decimal point.

If the required tetragon doen't exist, output NO in the first line, and leave the second line empty.

Examples

Input

3
1 1 2 2 3 3
0 1 1 0 2 2
9 3 7 9 9 8


Output

NO

YES
3.5 1.5 0.5 2.5 -0.5 -0.5 2.5 0.5
NO

Solution (in CPP):

Solution:
#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-10;
struct Tpoint {
  double x, y;
};
Tpoint operator+(Tpoint a, Tpoint b) { return (Tpoint){a.x + b.x, a.y + b.y}; }
Tpoint operator-(Tpoint a, Tpoint b) { return (Tpoint){a.x - b.x, a.y - b.y}; }
double det(Tpoint a, Tpoint b) { return a.x * b.y - b.x * a.y; }
double norm(Tpoint a) { return a.x * a.x + a.y * a.y; }
Tpoint get(Tpoint a, Tpoint b, Tpoint c) {
  double sa = norm(a), sb = norm(b), sc = norm(c);
  double d = a.x * (b.y - c.y) + b.x * (c.y - a.y) + c.x * (a.y - b.y);
  double rx = (a.y * (sb - sc) + b.y * (sc - sa) + c.y * (sa - sb)) / d;
  double ry = (a.x * (sb - sc) + b.x * (sc - sa) + c.x * (sa - sb)) / d;
  return (Tpoint){-rx * 0.5, ry * 0.5};
}
bool check(Tpoint a, Tpoint b, Tpoint c) {
  Tpoint d = b + b - c, A = get(a, b, d);
  Tpoint B = b + b - A, C = c + c - B, D = a + a - A;
  if (det(A - D, B - A) < eps || det(B - A, C - B) < eps ||
      det(C - B, D - C) < eps || det(D - C, A - D) < eps)
    return true;
  else {
    puts("YES");
    printf("%.10lf %.10lf ", A.x, A.y);
    printf("%.10lf %.10lf ", B.x, B.y);
    printf("%.10lf %.10lf ", C.x, C.y);
    printf("%.10lf %.10lf ", D.x, D.y);
    return false;
  }
}
int main() {
  int test;
  Tpoint a, b, c;
  for (scanf("%d", &test); test; --test) {
    scanf("%lf%lf", &a.x, &a.y);
    scanf("%lf%lf", &b.x, &b.y);
    scanf("%lf%lf", &c.x, &c.y);
    if (fabs(det(b - a, c - a)) < eps ||
        (check(a, b, c) && check(a, c, b) && check(b, a, c) && check(b, c, a) &&
         check(c, a, b) && check(c, b, a)))
      puts("NO");
    else
      puts("");
  }
  return 0;
}