Problem: The statement of this problem is the same as the statement of problem C1. 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 odd integer n (3 ≤ n ≤ 199). 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
3
5
199


Output


1.931851653
3.196226611
126.687663595

Solution (in JAVA):

Solution:

import java.text.DecimalFormat;
import java.util.*;


public class q_3 {
    static Scanner sc;
    static double pi =3.141592653589793 ;
    public static void main(String[] args){
        sc = new Scanner(System.in);
        int test  = getInt();
        for(int i=0; i<test; i++){
            int n = getInt();
            double deg1 = (double)180/(double)(n*2);
            double rad1 = 0.017453292519943295D * deg1;
            double denom = Math.sin(rad1);
            double deg2 = (double)((n-1)*180)/(double)(2*n);
            double rad2 =0.017453292519943295D * deg2;
            double num = Math.sin(rad2);
            //System.out.println(num+" "+denom);
            DecimalFormat numberFormat = new DecimalFormat("#0.0000000000");
            double frac = (num / (denom));
            double multiplier_den = Math.cos(rad1);
            double multiplier_num = Math.cos(rad1/(double)2);
            frac = frac*multiplier_num/multiplier_den;
            System.out.println(numberFormat.format(frac));

        }
    }




    public static int getInt(){
        return sc.nextInt();
    }

    public static String getString(){
        return sc.next();
    }

    public static String nextLine(){
        return sc.nextLine();
    }

    public static long getLong(){ return sc.nextLong(); }

    public static double getDouble(){ return sc.nextDouble(); }

    public static int[] getArray(int n){
        int[] arr = new int[n];
        for(int i=0; i<n; i++){
            arr[i] = getInt();
        }
        return arr;
    }

    public static long[] getLongArray(int n){
        long[] res = new long[n];
        for(int i=0; i<n; i++){
            res[i] = getLong();
        }
        return res;
    }

    public static double[] getDoubleArray(int n){
        double[] arr = new double[n];
        for(int i=0; i<n ; i++){
            arr[i] = getDouble();
        }
        return arr;
    }

    public static char[] getCharArray(){
        return getString().toCharArray();
    }

    public static String[] getStringArray(int n){
        String[] strings = new String[n];
        for(int i=0; i<n; i++){
            strings[i] = getString();
        }
        return strings;
    }

    // Get GCD
    public static int getGCD(int a, int b){
        return (a==0 ? b : getGCD(b%a, a));
    }

    public static int getGCD(int[] arr){
        int n = arr.length;
        if(n==0){
            return -1;
        }
        int res = arr[0];
        for(int i=1; i<n; i++){
            res = getGCD(res, arr[i]);
        }
        return res;
    }

    // Get all prime numbers till N using seive of Eratosthenes
    public static List<Integer> getPrimesTill(int n){
        boolean[] arr = new boolean[n+1];
        List<Integer> primes = new LinkedList<>();
        for(int i=2; i<=n; i++){
            if(!arr[i]){
                primes.add(i);
                for(int j=(i*i); j<=n; j+=i){
                    arr[j] = true;
                }
            }
        }
        return primes;
    }


    // This method returns list of PrimeFactors of a number in O(sqrt(N));
    public static Map<Integer,Integer> getPrimeFactors(long n){
        Map<Integer,Integer> res = new HashMap<>();
        int sqrt = (int) Math.sqrt(n);
        if(n%2 == 0){
            int c = 0;
            while(n%2==0){
                c++;
                n/=2;
            }
            res.put(2,c);
        }
        for(int i=3; i<=sqrt; i+=2){
            if(n%i == 0) {
                int c = 0;
                while (n % i == 0) {
                    c++;
                    n /= i;
                }
                res.put(i,c);
            }
        }
        return res;
    }

}