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-9;
bool pd(complex<double> a, complex<double> b, complex<double> c,
        complex<double> d) {
  return imag((b - a) * conj(d - a)) * imag((b - a) * conj(c - a)) < -eps;
}
bool aa(complex<double> a, complex<double> b, complex<double> c) {
  complex<double> d = c;
  c = b + b - c;
  if (imag((c - a) / (b - a)) < 0) swap(b, c);
  double r = abs(b - c) / sin(arg((c - a) * conj(b - a))) / 2;
  double th = acos(abs(b - a) / 2 / r);
  complex<double> B = a + polar(r, arg(b - a) + th), A = a + a - B,
                  C = b + b - B, D = d + d - C;
  double dd[4];
  dd[0] = abs(A - B), dd[1] = abs(A - D), dd[2] = abs(C - D),
  dd[3] = abs(B - C);
  sort(dd, dd + 4);
  if ((fabs(dd[0] - dd[2]) < eps || fabs(dd[1] - dd[3]) < eps) &&
      pd(A, C, B, D) && pd(B, D, A, C)) {
    puts("YES");
    printf("%.9lf %.9lf %.9lf %.9lf %.9lf %.9lf %.9lf %.9lf\n", real(A),
           imag(A), real(D), imag(D), real(C), imag(C), real(B), imag(B));
    return 1;
  }
  return 0;
}
int main() {
  int T;
  scanf("%d", &T);
  while (T--) {
    int x1, y1, x2, y2, x3, y3;
    scanf("%d%d%d%d%d%d", &x1, &y1, &x2, &y2, &x3, &y3);
    complex<double> a = complex<double>(x1, y1), b = complex<double>(x2, y2),
                    c = complex<double>(x3, y3);
    if (aa(a, b, c)) continue;
    if (aa(a, c, b)) continue;
    if (aa(b, a, c)) continue;
    if (aa(b, c, a)) continue;
    if (aa(c, a, b)) continue;
    if (aa(c, b, a)) continue;
    puts("NO");
  }
  return 0;
}