Problem: The statement of this problem is the same as the statement of problem C2. The only difference is that, in problem C1, n is always even, and in C2, n is always odd.

You are given a regular polygon with 2 ⋅ n vertices (it's convex and has equal sides and equal angles) and all its sides have length 1. Let's name it as 2n-gon.

Your task is to find the square of the minimum size such that you can embed 2n-gon in the square. Embedding 2n-gon in the square means that you need to place 2n-gon in the square in such way that each point which lies inside or on a border of 2n-gon should also lie inside or on a border of the square.

You can rotate 2n-gon and/or the square.

Input

The first line contains a single integer T (1 ≤ T ≤ 200) — the number of test cases.

Next T lines contain descriptions of test cases — one per line. Each line contains single even integer n (2 ≤ n ≤ 200). Don't forget you need to embed 2n-gon, not an n-gon.

Output

Print T real numbers — one per test case. For each test case, print the minimum length of a side of the square 2n-gon can be embedded in. Your answer will be considered correct if its absolute or relative error doesn't exceed 10^{-6}.

Example

Input


3
2
4
200


Output


1.000000000
2.414213562
127.321336469

Solution (in JAVA):

Solution:
import java.util.*;
import java.io.*;
import java.lang.*;
public class main
{
 static Hashtable<String ,Integer>hash=new Hashtable<>();
 static int dp[];
 static int ans[]=new int[2001];
static boolean visited[];
  public static void main(String args[]) throws java.lang.Exception
  {
    
  BufferedReader inp = new BufferedReader (new InputStreamReader(System.in));
int t=Integer.parseInt(inp.readLine());
StringBuilder sb=new StringBuilder();
while(t-->0)
{
  float n=Float.parseFloat(inp.readLine());
System.out.println((double)1/(double)Math.tan(Math.PI/(2*n)));
}

}
// System.out.print(sb);

static int get(int arr[], int i, int k, int pos)
{
  if(i==arr.length){return 0;}
  if(dp[pos+1]!=-1){return dp[pos+1]; }
  int a=0;
  if(pos==-1)
  {
    if(arr[i]==1)
    {
    a= Math.min(get(arr,i+1,k,pos)+1,get(arr,i+1,k,i));
    }
    else{a=get(arr,i+1,k,pos);}
}
  else if(arr[i]==0)
  {
    if(i-pos<k || i-pos>k){a= get(arr,i+1,k,pos);}
    else{a=Math.min(get(arr,i+1,k,i)+1,get(arr,i+1,k,pos));}
  }
  else{
  if(i-pos==k){a= get(arr,i+1,k,i);}
  else{a= get(arr,i+1,k,pos)+1;}
  }
 dp[pos+1]=a;
  return a;

}



 
     
  }

  class Pair
  {
     int a;
     int b;
     Pair(int c , int d){a=c;b=d;}
  }