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:
/*#include<iostream>
using namespace std;

int main() {
	long long t, n, k;
	cin >> t;
	while (t--) {
		cin >> n >> k;
		if (n % 2 == 0) {

			cout << (k-1)%n + 1 << endl;
		}
		else {
			long long posInGroup = (k-1) % (n * (n - 1) / 2);
			long long groupNo = posInGroup / n;
			long long pos = posInGroup % n;
			if (pos < ((n - 1) / 2 - groupNo))
				cout << (2*groupNo+pos) + 1 << endl;
			else if (pos < (n - 1 - groupNo))
				cout << (2 * groupNo + pos + 1) % n + 1 << endl;
			else cout << (2 * groupNo + pos + 2) % n + 1 << endl;
		}
	}
	
	return 0;

}

#include<iostream>
#include<vector>
using namespace std;
int main() {
	int t, n;
	cin >> t;
	while (t--) {
		cin >> n;
		vector<int> result(n - 1);
		if (n % 2) {
			for (int i = 0; i < (n - 1) / 2; i++)
				result[i] = 1;
			for (int i = (n - 1) / 2; i < n - 1; i++)
				result[i] = -1;
			for (int i = 0; i < n - 1; i++)
				for (int j = 0; j < n -i-1; j++)
					cout << result[j] << " ";
			cout << endl;
		}
		else {
			for (int i = 0; i < (n - 1) / 2 ; i++)
				result[i] = 1;
			result[(n - 1) / 2] = 0;
			for (int i = (n - 1) / 2 + 1; i < n - 1; i++)
				result[i] = -1;
			for (int i = 0; i < n - 1; i++)
				for (int j = 0; j < n -1 -i; j++)
					cout << result[j] << " ";
			cout << endl;
		}

	}
	return 0;
}*/

#include<iostream>
#include<vector>
using namespace std;
#define MAXM 100000000000
typedef unsigned long long ULL;
//#define unsigned long long ULL
int main() {
	ULL t,n;
	cin >> t;
	vector<ULL> cValues;
	for (ULL i = 3; i * i <= MAXM; i=i+2) {
		ULL b = (i * i - 1) / 2;
		ULL c = b + 1;
		ULL a = c * c - b * b;
		if (a == b + c) {
			cValues.push_back(c);
			//cout << "added C value=" << c << endl;
		}
	}
	while (t--) {
		cin >> n;
		int count=0;
		int cValuesSize = cValues.size();
		//cout << cValuesSize << endl;
		for (ULL i = 0; cValues[i] <= n && i<cValuesSize; i++) {
			//cout << cValues[i] << " increment count" << endl;
			count++;
		}
		cout << count << endl;
	}
}