Problem: A Pythagorean triple is a triple of integer numbers (a, b, c) such that it is possible to form a right triangle with the lengths of the first cathetus, the second cathetus and the hypotenuse equal to a, b and c, respectively. An example of the Pythagorean triple is (3, 4, 5).

Vasya studies the properties of right triangles, and he uses a formula that determines if some triple of integers is Pythagorean. Unfortunately, he has forgotten the exact formula; he remembers only that the formula was some equation with squares. So, he came up with the following formula: c = a^2 - b.

Obviously, this is not the right formula to check if a triple of numbers is Pythagorean. But, to Vasya's surprise, it actually worked on the triple (3, 4, 5): 5 = 3^2 - 4, so, according to Vasya's formula, it is a Pythagorean triple.

When Vasya found the right formula (and understood that his formula is wrong), he wondered: how many are there triples of integers (a, b, c) with 1 ≤ a ≤ b ≤ c ≤ n such that they are Pythagorean both according to his formula and the real definition? He asked you to count these triples.

Input

The first line contains one integer t (1 ≤ t ≤ 10^4) — the number of test cases.

Each test case consists of one line containing one integer n (1 ≤ n ≤ 10^9).

Output

For each test case, print one integer — the number of triples of integers (a, b, c) with 1 ≤ a ≤ b ≤ c ≤ n such that they are Pythagorean according both to the real definition and to the formula Vasya came up with.

Example

Input


3
3
6
9


Output


0
1
1

Note

The only Pythagorean triple satisfying c = a^2 - b with 1 ≤ a ≤ b ≤ c ≤ 9 is (3, 4, 5); that's why the answer for n = 3 is 0, and the answer for n = 6 (and for n = 9) is 1.

Solution (in JAVA):

Solution:
import java.io.*;
import java.util.ArrayList;
import java.util.StringTokenizer;


public class Solution {

    private static boolean TESTS = true;

    private final Input in;
    private final PrintStream out;

    public Solution(final Input in, final PrintStream out) {
        this.in = in;
        this.out = out;
    }

    public void solve() {
        for (int test = 1, tests = TESTS ? in.nextInt() : 1; test <= tests; test++) {
           final int n = in.nextInt();
           out.println(query(n));
        }
    }

    private static final ArrayList<Integer> M = new ArrayList<>();

    static {
        for (int a = 3; ; a += 2) {
            final int b = (a * a - 1) / 2;
            final int c = b + 1;

            if (c > 1_000_000_000) {
                break;
            }

            M.add(c);
        }
    }

    private static int query(final int x) {
        int l = 0;
        int r = M.size() - 1;

        while (l <= r) {
            final int m = (l + r) >>> 1;
            final int y = M.get(m);

            if (x >= y) {
                l = m + 1;
            } else {
                r = m - 1;
            }
        }

        return l;
    }


    public static void main(final String[] args) {
        final Input in = new Input();
        final PrintStream out = new PrintStream(new BufferedOutputStream(System.out));

        try {
            new Solution(in, out).solve();
        } finally {
            out.flush();
        }
    }

    private static final class Input {

        private final BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        private StringTokenizer tokenizer = new StringTokenizer("");

        public String nextString() {
            try {
                while (!tokenizer.hasMoreTokens()) {
                    final String line = reader.readLine();
                    tokenizer = new StringTokenizer(line, " ");
                }

                return tokenizer.nextToken();
            } catch (final IOException e) {
                throw new RuntimeException(e);
            }
        }

        public int nextInt() {
            return Integer.parseInt(nextString());
        }

        public long nextLong() {
            return Long.parseLong(nextString());
        }

        public double nextDouble() {
            return Double.parseDouble(nextString());
        }

        public int[] nextInts(final int size) {
            final int[] array = new int[size];

            for (int i = 0; i < size; i++) {
                array[i] = nextInt();
            }

            return array;
        }

        public long[] nextLongs(final int size) {
            final long[] array = new long[size];

            for (int i = 0; i < size; i++) {
                array[i] = nextLong();
            }

            return array;
        }

        public double[] nextDoubles(final int size) {
            final double[] array = new double[size];

            for (int i = 0; i < size; i++) {
                array[i] = nextDouble();
            }

            return array;
        }

    }

}