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.io.*;
import java.sql.SQLSyntaxErrorException;
import java.util.*;
import java.util.zip.Adler32;

public class Contest1 {

    public static void main(String[] args) throws Exception {
        Scanner sc = new Scanner(System.in);
        PrintWriter pw = new PrintWriter(System.out);
//        int n = sc.nextInt();
//        int q = sc.nextInt();
//        int[] ft = new int[n+1];
//        for (int i =0;i<n;i++){
//           int x = sc.nextInt();
//            while(x <= n) { ft[x] += 1; x += x & -x; }
//        }
//        while (q-->0){
//            int x = sc.nextInt();
//            if (x>0){
//                while(x <= n) { ft[x] += 1; x += x & -x; }
//            }
//            else {
//                x= Math.abs(x);
//                int sum =0;
//                int id=0;
//                for (int i =22;i>=0;i--){
//                    if (id+(1<<i)>n)
//                        continue;
//                    if (sum+ft[id+(1<<i)]<x){
//                        id+=(1<<i);
//                        sum+=ft[id];
//                    }
//                }
//                id++;
//                x=id;
//                while(x <= n) { ft[x] += -1; x += x & -x; }
//            }
//        }
//        boolean is =false;
//        while(n > 0) { if (ft[n]>0)
//            is=true; n -= n & -n;}
//        if (!is){
//            pw.println(0);
//        }
//        else{
//            int id=0;
//            for (int i =22;i>=0;i--){
//                if (id+(1<<i)>n)
//                    continue;
//                if (ft[id+(1<<i)]<1){
//                    id+=(1<<i);
//                }
//            }
//            pw.println(id+1);
//        }
        int  t = sc.nextInt();
        while (t-->0){
            int n= sc.nextInt();
            double v = 2.0/(2*Math.sin(Math.PI/(2*n)));
            pw.println(Math.sqrt((v*v)-1));
        }
        pw.flush();
    }
    static class Scanner {
        StringTokenizer st;
        BufferedReader br;

        public Scanner(FileReader r) {
            br = new BufferedReader(r);
        }

        public Scanner(InputStream s) {
            br = new BufferedReader(new InputStreamReader(s));
        }

        public String next() throws IOException {
            while (st == null || !st.hasMoreTokens())
                st = new StringTokenizer(br.readLine());
            return st.nextToken();
        }

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

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

        public String nextLine() throws IOException {
            return br.readLine();
        }

        public double nextDouble() throws IOException {
            String x = next();
            StringBuilder sb = new StringBuilder("0");
            double res = 0, f = 1;
            boolean dec = false, neg = false;
            int start = 0;
            if (x.charAt(0) == '-') {
                neg = true;
                start++;
            }
            for (int i = start; i < x.length(); i++)
                if (x.charAt(i) == '.') {
                    res = Long.parseLong(sb.toString());
                    sb = new StringBuilder("0");
                    dec = true;
                } else {
                    sb.append(x.charAt(i));
                    if (dec)
                        f *= 10;
                }
            res += Long.parseLong(sb.toString()) / f;
            return res * (neg ? -1 : 1);
        }

        public boolean ready() throws IOException {
            return br.ready();
        }
    }
}