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 CPP):

Solution:
#define _CRT_SECURE_NO_WARNINGS
#pragma comment (linker, "/STACK:10000000000")
//#pragma GCC optimize("O3")
#include <iostream>
#include <stdio.h>
#include <cmath>
#include <math.h>
#include <iomanip> 
#include <cstring>
#include <string>
#include <string.h>
#include <algorithm>
#include <vector>
#include <set>
#include <map>
#include <unordered_map>
#include <unordered_set>
#include <deque>
#include <queue>
#include <stack>

using namespace std;

typedef long long ll;
typedef long double ld;

#define fr(i, l, r) for(int i = l; i < r; ++i)
#define rf(i, r, l) for(int i = r; i > l; --i)
#define fr_au(i, l, r) for(auto i = l; i != r; ++i)
#define len(a) a.size()
#define elif else if
#define mp make_pair
#define pb push_back
//#define or ||
//#define and &&

int inf = 1000000007;
int n, v, t, ans, k;
map <int, int> sl;
int mas[111][111];

int pifagor(int limit) {
	int a, b, c = 0, cnt = 0;
	int m = 2;
	while (c < limit) {
		fr(i, 1, m) {
			a = m * m - i * i;
			b = 2 * m * i;
			c = m * m + i * i;
			if (c > limit)
				break;
			if (c - b == 1) {
				++cnt;
				sl[c] = cnt;
			}
		}
		++m;
	}
	return cnt;
}

int main() {
	ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#ifndef ONLINE_JUDGE
	freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout);
#endif
	scanf("%d", &t);
	vector <int> vec(t, 0);
	int mx = 0;
	fr(i, 0, t) {
		scanf("%d", &vec[i]);
		mx = max(mx, vec[i]);
	}
	pifagor(mx + 1);
	sl[0] = 0;
	fr(i, 0, vec.size()) {
		if (sl.find(vec[i]) == sl.end()) {
			auto a = sl.begin();
			fr_au(j, sl.begin(), sl.end()) {
				if ((*j).first <= vec[i]) {
					a = j;
				}
				else {
					break;
				}
			}
			printf("%d\n", (*a).second);
		}
		else {
			printf("%d\n", sl[vec[i]]);

		}
	}
	return 0;
}