#include<bits/stdc++.h>
#define ll long long
using namespace std;
vector<int> prime;
bool mark[1000005];
void sieve()
{
int n = 1000000;
int sqrtn = sqrt(n), i, j;
mark[1] = 1;
prime.push_back(2);
for (i = 4; i <= n; i += 2)
{
mark[i] = 1;
}
for (i = 3; i <= n; i += 2)
{
if (mark[i] == 0)
{
prime.push_back(i);
if (i <= sqrtn + 2)
{
for (j = i * i ; j <= n ; j += (2 * i))
{
mark[j] = 1;
}
}
}
}
}
// vector<int> factor;
map<ll, ll> factor;
void primefactorize(long long n)
{
factor.clear();
int i;
for (i = 0; i < (int)prime.size() && (long long)prime[i]*prime[i] <= (long long)n; i++)
{
if (n % prime[i] == 0)
{
while (n % prime[i] == 0)
{
factor[prime[i]]++;
n /= prime[i];
}
}
}
if (n > 1)
factor[prime[i]]++;
}
int res[1000005];
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
long long n, i, j, T, t;
sieve();
long long sum = 0, mx = 0;
for (long long j = 1; j <= 1000000; j++)
{
sum += j;
map<long long , long long> m;
map<long long , long long> :: iterator it;
primefactorize(sum);
long long NOD = 1;
for (it = factor.begin() ; it != factor.end() ; it++)
{
NOD *= (it -> second + 1);
}
// cout << NOD << ' ';
// ll NOD = 1;
// primefactorize(sum);
// for(auto it:factor){
// NOD *= (it.S+1);
// }
mx = max(mx, NOD);
res[j] = mx;
}
// cout << endl;
scanf("%lld", &T);
for (t = 1; t <= T; t++)
{
scanf("%lld", &n);
cout << res[n] << '\n';
}
return 0;
}