Let's call an array a consisting of n positive (greater than 0) integers beautiful if the following condition is held for every i from 1 to n: either a_i = 1, or at least one of the numbers a_i - 1 and a_i - 2 exists in the array as well.

For example: 

  * the array [5, 3, 1] is beautiful: for a_1, the number a_1 - 2 = 3 exists in the array; for a_2, the number a_2 - 2 = 1 exists in the array; for a_3, the condition a_3 = 1 holds; 
  * the array [1, 2, 2, 2, 2] is beautiful: for a_1, the condition a_1 = 1 holds; for every other number a_i, the number a_i - 1 = 1 exists in the array; 
  * the array [1, 4] is not beautiful: for a_2, neither a_2 - 2 = 2 nor a_2 - 1 = 3 exists in the array, and a_2 ≠ 1; 
  * the array [2] is not beautiful: for a_1, neither a_1 - 1 = 1 nor a_1 - 2 = 0 exists in the array, and a_1 ≠ 1; 
  * the array [2, 1, 3] is beautiful: for a_1, the number a_1 - 1 = 1 exists in the array; for a_2, the condition a_2 = 1 holds; for a_3, the number a_3 - 2 = 1 exists in the array. 



You are given a positive integer s. Find the minimum possible size of a beautiful array with the sum of elements equal to s.

Input

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

Then t lines follow, the i-th line contains one integer s (1 ≤ s ≤ 5000) for the i-th test case.

Output

Print t integers, the i-th integer should be the answer for the i-th testcase: the minimum possible size of a beautiful array with the sum of elements equal to s.

Example

Input


4
1
8
7
42


Output


1
3
3
7

Note

Consider the example test:

  1. in the first test case, the array [1] meets all conditions; 
  2. in the second test case, the array [3, 4, 1] meets all conditions; 
  3. in the third test case, the array [1, 2, 4] meets all conditions; 
  4. in the fourth test case, the array [1, 4, 6, 8, 10, 2, 11] meets all conditions. 
				#include <bits/stdc++.h>
	//			#include <ext/pb_ds/assoc_container.hpp>
	//			#include <ext/pb_ds/tree_policy.hpp>

				using ll = long long;
				using ld = long double;

				#define rep(i, a, n) for(ll i = (a); i < (n); i++)
				#define per(i, a, n) for(ll i = (n-1); i >= (a); i--)
				#define F first
				#define S second
				#define elif else if
				#define endl "\n"
				#define all(x) begin(x), end(x)
				#define maxx(a, b) a = max(a, b)
				#define minn(a, b) a = min(a, b)
				#define db(x) cerr<<#x<<" = "<<x<<endl
				#define N 1111111
				#define mod 1000000007
				#define rt return
				#define inf 1234567891123456789ll
				#define error(args...){string _s = #args; replace(_s.begin(), _s.end(), ',', ' '); stringstream _ss(_s); istream_iterator<string> _it(_ss); err(_it, args); }

				using namespace std;

				clock_t startTime;

				double getCurrentTime() {
				    return (double) (clock() - startTime) / CLOCKS_PER_SEC;
				}
//				mt19937 rng(chrono::high_resolution_clock::now().time_since_epoch().count());
	//			using namespace __gnu_pbds;
	//
	//			typedef tree<pair<ll,ll>, null_type, less<pair<ll,ll>>, rb_tree_tag, tree_order_statistics_node_update> indexed_set;


				void err(istream_iterator<string> it) {}
				template<typename T, typename... Args>
				void err(istream_iterator<string> it, T a, Args... args)
				{
					cerr<<*it<<" = "<<a<<endl;
					err(++it, args...);
				}

				ll modlaber(ll a, ll m = mod)
				{
					rt ((a+m)%m+m)%m;
				}

				void doit(ll test)
				{
					int n; cin>>n;
					int ans = 0;
					int s = 0;
					int cur = 1;
					while(s < n)
					{
						s += cur;
						cur += 2;
						ans++;
					}
					cout<<ans<<endl;
				}

				int main()
				{
					ios_base::sync_with_stdio(0);
					cin.tie(0);
					cout.tie(0);
	//				freopen("b_read_on.in","r",stdin);
	//				freopen("ans.out","w",stdout);


					int _; cin>>_;
//					int _ = 1;
//					while(_ --> 0)
					rep(__, 1, _+1)
					{
						doit(__);
					}

					cerr << endl << "Time: " << int(getCurrentTime() * 1000) << " ms" << endl;

					rt 0;
				}





















