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:
// package name;
import java.io.*;
import java.util.*;

public class Main {
	static final long mod = 1000000007;
	static final long lmx = 9223372036854775807l, lmn = -9223372036854775808l;
	static final int imx = 2147483647, imn = -2147483648;
	static final String Y = "YES", NO = "NO", LN = "\n", SPC = " ";
	static Scanner s = new Scanner(System.in);
	//static Reader s = new Reader();
	static PrintWriter out = new PrintWriter(System.out);
	static StringBuffer sb = new StringBuffer();

	public static void main(String[] args) throws IOException {
		int t = 1;
		t = s.nextInt();
		//slinp();
		while (t > 0) {
			t--;
			int n = iinp();//, b = linp(), c = linp(), d = linp();
			n = 2 * n;
			double num = 22;
			double den = 7;
			double val = 3.141592653589793;
			double tm = 2 * (Math.tan(val / n));
			double a = 1 / tm;
			sb.append(a * 2);
			ln();
		}
		out.print(sb);
		out.flush();
	}

	static void app(String x) throws IOException {
		sb.append(x);
	}

	static void spc() throws IOException {
		sb.append(SPC);
	}

	static void ln() throws IOException {
		sb.append(LN);
	}

	static int iinp() throws IOException {
		return s.nextInt();
	}

	static long linp() throws IOException {
		return s.nextLong();
	}

	static double dinp() throws IOException {
		return s.nextDouble();
	}

	static String sinp() throws IOException {
		return s.next();
	}

	static String slinp() throws IOException {
		return s.nextLine();
	}

	static int[] iarr(int n) {
		return new int[n];
	}

	static long[] larr(int n) {
		return new long[n];
	}

	static double[] darr(int n) {
		return new double[n];
	}

	static boolean[] barr(int n) {
		return new boolean[n];
	}

	static String[] sarr(int n) {
		return new String[n];
	}

	static int[][] iarr(int n, int m) {
		return new int[n][m];
	}

	static long[][] larr(int n, int m) {
		return new long[n][m];
	}

	static int[] iinp(int n, int st, int size) throws IOException {
		int a[] = iarr(n);
		for (int i = st; i < st + size; i++)
			a[i] = iinp();
		return a;
	}

	static long[] linp(int n, int st, int size) throws IOException {
		long a[] = larr(n);
		for (int i = st; i < st + size; i++)
			a[i] = linp();
		return a;
	}

	static String[] sinp(int n, int st, int size, String str) throws IOException {
		String a[] = sarr(n);
		for (int i = st; i < st + size; i++)
			if (str.equalsIgnoreCase(SPC))
				a[i] = sinp();
			else
				a[i] = slinp();
		return a;
	}

	static int[][] iinp(int n, int m, int row, int rows, int col, int cols) throws IOException {
		int a[][] = iarr(n, m);
		for (int i = row; i < row + rows; i++)
			for (int j = col; j < col + cols; j++)
				a[i][j] = iinp();
		return a;
	}

	static long[][] linp(int n, int m, int row, int rows, int col, int cols) throws IOException {
		long a[][] = larr(n, m);
		for (int i = row; i < row + rows; i++)
			for (int j = col; j < col + cols; j++)
				a[i][j] = linp();
		return a;
	}

	static void ginp(ArrayList<Integer> g[], int m) throws IOException {
		for (int i = 0; i < m; i++) {
			int u = iinp(), v = iinp();
			g[u].add(u);
			g[v].add(u);
		}
	}

	static long min(long... a) {
		long min = lmx;//Long.MAX_VALUE;
		for (long i : a)
			if (i < min)
				min = i;
		return min;
	}

	static int min(int... a) {
		int min = imx;//Long.MAX_VALUE;
		for (int i : a)
			if (i < min)
				min = i;
		return min;
	}

	static long max(long... a) {
		long max = lmn;//Long.MIN_VALUE;
		for (long i : a)
			if (i > max)
				max = i;
		return max;
	}

	static int max(int... a) {
		int max = imn;//Long.MIN_VALUE;
		for (int i : a)
			if (i > max)
				max = i;
		return max;
	}

	static long gcd(long a, long b) {
		if (b == 0)
			return a;
		return gcd(b, a % b);
	}

	static int gcd(int a, int b) {
		if (b == 0)
			return a;
		return gcd(b, a % b);
	}

	static void sort(int a[]) {
		Arrays.sort(a);
	};

	static void sort(long a[]) {
		Arrays.sort(a);
	};

	static void sort(String a[]) {
		Arrays.sort(a);
	};

	static void sort(int a[], int st, int e) {
		Arrays.sort(a, st, e);
	};

	static void sort(long a[], int st, int e) {
		Arrays.sort(a, st, e);
	};

	static void sort(String a[], int st, int e) {
		Arrays.sort(a, st, e);
	};

	static void sortbycol(int arr[][]) {
		Arrays.sort(arr, new Comparator<int[]>() {
			public int compare(int[] x, int[] y) {
				if (x[1] == y[1])
					return x[2] - y[2];
				return x[1] - y[1]; // sort in increasing order on the basis of first column
			}
		});
	}

	static StringBuffer printarr(long a[], String str) {
		StringBuffer ans = new StringBuffer();
		for (long i : a)
			ans.append(i + str);
		return ans;
	}

}

class Pair implements Comparator<Pair> {
	long a, b;

	Pair(long x, long y) {
		a = x;
		b = y;
	}

	public int compare(Pair p1, Pair p2) {
		if (p1.a != p2.a)
			return (p1.a - p2.a > 0) ? 1 : -1;
		return (p1.b - p2.b > 0) ? 1 : -1;
	}
}