#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> precompute_spf(int max_num) {
vector<int> spf(max_num + 1, 0);
spf[0] = spf[1] = 1;
for (int i = 2; i <= max_num; ++i) {
if (spf[i] == 0) {
spf[i] = i;
for (int j = i * i; j <= max_num; j += i) {
if (spf[j] == 0) {
spf[j] = i;
}
}
}
}
return spf;
}
int num_divisors(int x, const vector<int>& spf) {
if (x == 1) return 1;
int res = 1;
while (x > 1) {
int p = spf[x];
int count = 0;
while (x % p == 0) {
x /= p;
count++;
}
res *= (count + 1);
}
return res;
}
vector<int> precompute_max_divisors(int max_N) {
int max_S = max_N * (max_N + 1) / 2;
vector<int> spf = precompute_spf(max_S);
vector<int> max_divisors(max_N + 1, 0);
int current_max = 0;
for (int L = 1; L <= max_N; ++L) {
int S = L * (L + 1) / 2;
int divisors = num_divisors(S, spf);
if (divisors > current_max) {
current_max = divisors;
}
max_divisors[L] = current_max;
}
return max_divisors;
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int T;
cin >> T;
vector<int> queries(T);
int max_N = 0;
for (int i = 0; i < T; ++i) {
cin >> queries[i];
if (queries[i] > max_N) {
max_N = queries[i];
}
}
vector<int> max_divisors = precompute_max_divisors(max_N);
for (int N : queries) {
cout << max_divisors[N] << '\n';
}
return 0;
}