Problem: Try guessing the statement from this picture: 

<image>

You are given a non-negative integer d. You have to find two non-negative real numbers a and b such that a + b = d and a ⋅ b = d.

Input

The first line contains t (1 ≤ t ≤ 10^3) — the number of test cases.

Each test case contains one integer d (0 ≤ d ≤ 10^3).

Output

For each test print one line.

If there is an answer for the i-th test, print "Y", and then the numbers a and b.

If there is no answer for the i-th test, print "N".

Your answer will be considered correct if |(a + b) - a ⋅ b| ≤ 10^{-6} and |(a + b) - d| ≤ 10^{-6}.

Example

Input


7
69
0
1
4
5
999
1000


Output


Y 67.985071301 1.014928699
Y 0.000000000 0.000000000
N
Y 2.000000000 2.000000000
Y 3.618033989 1.381966011
Y 997.998996990 1.001003010
Y 998.998997995 1.001002005

Solution (in CPP):

Solution:
#include <bits/stdc++.h>
using namespace std;
template <typename xxs6OP9DHOUT>
ostream& operator<<(ostream& xxs6OP9DHOUos,
                    const vector<xxs6OP9DHOUT>& xxs6OP9DHOUv) {
  xxs6OP9DHOUos << "\x7b";
  for (auto xxs6OP9DHOUit = xxs6OP9DHOUv.begin();
       xxs6OP9DHOUit != xxs6OP9DHOUv.end(); ++xxs6OP9DHOUit) {
    if (xxs6OP9DHOUit != xxs6OP9DHOUv.begin()) xxs6OP9DHOUos << "\x2c\x20";
    xxs6OP9DHOUos << *xxs6OP9DHOUit;
  }
  return xxs6OP9DHOUos << "\x7d";
}
template <typename xxs6OP9DHOUF, typename xxs6OP9DHOUS>
ostream& operator<<(ostream& xxs6OP9DHOUos,
                    const pair<xxs6OP9DHOUF, xxs6OP9DHOUS>& xxs6OP9DHOUp) {
  return xxs6OP9DHOUos << "\x28" << xxs6OP9DHOUp.first << "\x2c\x20"
                       << xxs6OP9DHOUp.second << "\x29";
}
template <typename xxs6OP9DHOUT>
ostream& operator<<(ostream& xxs6OP9DHOUos,
                    const set<xxs6OP9DHOUT>& xxs6OP9DHOUv) {
  xxs6OP9DHOUos << "\x5b";
  for (auto xxs6OP9DHOUit = xxs6OP9DHOUv.begin();
       xxs6OP9DHOUit != xxs6OP9DHOUv.end(); ++xxs6OP9DHOUit) {
    if (xxs6OP9DHOUit != xxs6OP9DHOUv.begin()) xxs6OP9DHOUos << "\x2c\x20";
    xxs6OP9DHOUos << *xxs6OP9DHOUit;
  }
  return xxs6OP9DHOUos << "\x5d";
}
template <typename xxs6OP9DHOUT>
ostream& operator<<(ostream& xxs6OP9DHOUos,
                    const multiset<xxs6OP9DHOUT>& xxs6OP9DHOUv) {
  xxs6OP9DHOUos << "\x5b";
  for (auto xxs6OP9DHOUit = xxs6OP9DHOUv.begin();
       xxs6OP9DHOUit != xxs6OP9DHOUv.end(); ++xxs6OP9DHOUit) {
    if (xxs6OP9DHOUit != xxs6OP9DHOUv.begin()) xxs6OP9DHOUos << "\x2c\x20";
    xxs6OP9DHOUos << *xxs6OP9DHOUit;
  }
  return xxs6OP9DHOUos << "\x5d";
}
template <typename first, typename second>
ostream& operator<<(ostream& xxs6OP9DHOUos,
                    const map<first, second>& xxs6OP9DHOUv) {
  xxs6OP9DHOUos << "\x5b";
  for (auto xxs6OP9DHOUit = xxs6OP9DHOUv.begin();
       xxs6OP9DHOUit != xxs6OP9DHOUv.end(); ++xxs6OP9DHOUit) {
    if (xxs6OP9DHOUit != xxs6OP9DHOUv.begin()) xxs6OP9DHOUos << "\x2c\x20";
    xxs6OP9DHOUos << xxs6OP9DHOUit->first << "\x20\x3d\x20"
                  << xxs6OP9DHOUit->second;
  }
  return xxs6OP9DHOUos << "\x5d";
}
const long long xxs6OP9DHOUMOD = 1000000007;
const long long xxs6OP9DHOUN = 100000;
int32_t main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  long long xxs6OP9DHOUt;
  cin >> xxs6OP9DHOUt;
  while (xxs6OP9DHOUt--) {
    long long xxs6OP9DHOUd;
    cin >> xxs6OP9DHOUd;
    double xxs6OP9DHOUD = xxs6OP9DHOUd * xxs6OP9DHOUd - 4 * xxs6OP9DHOUd;
    if (xxs6OP9DHOUD < 0) {
      cout << "\x4e"
           << "\n";
    } else {
      cout << "\x59\x20";
      xxs6OP9DHOUD = sqrtl(xxs6OP9DHOUD);
      cout << fixed << setprecision(12);
      double xxs6OP9DHOUa1 = (xxs6OP9DHOUd + xxs6OP9DHOUD) / 2;
      double xxs6OP9DHOUa2 = (xxs6OP9DHOUd - xxs6OP9DHOUD) / 2;
      double xxs6OP9DHOUb1 = xxs6OP9DHOUd - xxs6OP9DHOUa1;
      double xxs6OP9DHOUb2 = xxs6OP9DHOUd - xxs6OP9DHOUa2;
      if (xxs6OP9DHOUa1 >= 0 && xxs6OP9DHOUb1 >= 0) {
        cout << xxs6OP9DHOUa1 << ((char)(0xa6f + 1567 - 0x106e))
             << xxs6OP9DHOUb1 << "\n";
      } else if (xxs6OP9DHOUa2 >= 0 && xxs6OP9DHOUb2 >= 0) {
        cout << xxs6OP9DHOUa2 << ((char)(0x15fb + 2169 - 0x1e54))
             << xxs6OP9DHOUb2 << "\n";
      }
    }
  }
  return 0;
}