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 JAVA):

Solution:

import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import static java.lang.Math.sqrt;
import java.util.StringTokenizer;

public class MemeProblem {

    public static void main(String[] args) throws IOException {
        //https://codeforces.com/problemset/problem/1076/C
        OutputStream out = new BufferedOutputStream(System.out);
        FastReader sc = new FastReader();
        int t = sc.nextInt();
        double d;
        for (int i = 0; i < t; i++) {
            d = sc.nextDouble();
            double delta = d * d - 4 * d;
            if (delta < 0) {
                out.write(("N\n").getBytes());
                out.flush();

            } else {
                double y1 = (d + sqrt(delta)) / 2;
                double y2 = (d - sqrt(delta)) / 2;
                double x1 = d - y1;
                double x2 = d - y2;
                if (x1 >= 0) {
                    out.write(("Y " + (y1) + " " + (x1) + " " + "\n").getBytes());
                    out.flush();
                } else {
                    if (x2 >= 0) {
                        out.write(("Y " + (y2) + " " + (x2) + " " + "\n").getBytes());
                        out.flush();
                    } else {
                        out.write(("N\n").getBytes());
                        out.flush();
                    }
                }
            }
        }
    }

    static class FastReader {

        BufferedReader br;
        StringTokenizer st;

        public FastReader() {
            br = new BufferedReader(new InputStreamReader(System.in));
        }

        String next() {
            while (st == null || !st.hasMoreElements()) {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {

                }
            }
            return st.nextToken();
        }

        int nextInt() {
            return Integer.parseInt(next());
        }

        long nextLong() {
            return Long.parseLong(next());
        }

        double nextDouble() {
            return Double.parseDouble(next());
        }

    }
}