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.util.*;
import java.io.*;



public class Main
{

	public static int gcd(int a , int b)
	{
		int divs=0;
		int divd=0;
		if(a>=b)
		{
			divd=a;
			divs=b;
		}
		else
		{
			divd=b;
			divs=a;
		}

		int rem=divd%divs;
		while(rem!=0)
		{
			int temp=divs;
			divs=rem;
			divd=temp;
			rem=divd%divs;
		}
		return divs;

	}
	static class spComp implements Comparator<long[]>
	{
		public int compare(long[] a, long[] b)
		{
			
			if(a[0]>b[0])
				return 1;
			else if(a[0]<b[0])
				return -1;
			else if(a[1]>b[1])
				return 1;
			else if(a[1]>b[1])
				return -1;
			else return 1;
		}
	}

	class unionFind
	{

		int parent[];
		int height[];
		int size=0;
		unionFind(int n)
		{
			size=n;
			parent = new int[n];
			height = new int[n];
			// Arrays.fill(parent, -1);
			for(int i=0;i<n;i++)
				parent[i]=i;

		}
		int find(int a)
		{
			if(parent[a]==a)
				return a;

			parent[a]=find(a);

			return parent[a];
		}

		void add(int a, int b)
		{
			a = find(a);
			b = find(b);
			
			if(height[a] > height[b])
			{
				parent[b] = a;
			}
			else if(height[ b ] > height[ a ])
				parent[ a ] = b;
			else if(height[ a ] == height[ b ])
			{
				height[ a ] = height[ a ]+1;
				parent[ b ] = a;
			}


		}
	}


	static ArrayList<Integer> largestpow(int val, ArrayList<Integer> primes)
	{
		int n=primes.size();
		ArrayList<Integer> powers= new ArrayList<Integer>();

		for(int i=0;i<n;i++)
		{
			int p=primes.get(i);
			while(val%p==0)
			{
				p=p*p;
			}
			powers.add(p);
		}
		return powers;
	}


	public static void main(String args[])
	{
		Scanner sc= new Scanner(System.in);
		int t= sc.nextInt();
		for(int i=0;i<t;i++)
		{
			int d=sc.nextInt();
			if(d<4 && d!=0)
			{
				System.out.println("N");
				continue;
			}
			else if(d!=0)
			{
				double root= Math.sqrt((double)d*(double)d-4*(double)d);
				double a= ((double)d + root)/2;
				double b= ((double)d - root)/2;
				System.out.println("Y "+a+" "+b);
			}
			else 
			{
				System.out.println("Y "+0.000000+" "+0.000000);
			}
		}


	}



}