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.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.TreeSet;

public class Main1 {

    static TreeSet<Long> set = new TreeSet<>();
    static Map<Long, Long> map = new HashMap<>();

    public static void main(String[] args) {
        for (long l = 3L, o = 1L; l * l <= 1999999999L; l += 2, o++) {
            long ll = l * l;
            set.add(ll);
            map.put(ll, o);
        }
        Scanner sc = new Scanner(System.in);
        int t = sc.nextInt();
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < t; i++) {
            long n = sc.nextLong();
//            if (i == 301) {
//                sb.append(3).append('\n');
//            } else {
            sb.append(find(n)).append('\n');
//            }
        }
        System.out.println(sb);
//        System.out.println(find(25L));
    }

    private static long find(long n) {
        Long floor = set.floor(n * n - (n - 1) * (n - 1));
        if (floor == null) return 0L;
        return map.get(floor);
//        return set.subSet(1L, 1L + n * n - (n - 1) * (n - 1)).size();
//        Long bla = set.floor(n * n - (n - 1) * (n - 1));
//        while (!set.contains(n * n - (n - 1) * (n - 1))) {
//            n--;
//        }
//        int sqrt = (int) Math.sqrt(bla);
//        return (sqrt / 2);
    }


}