#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; const int M = 100; vector primes; void calc() { vector isp(M + 1,1); for(int i = 2;i <= M;i++) { if(isp[i]) { primes.push_back(i); for(int j = i + i;j <= M;j += i) { isp[j] = 0; } } } } void Main() { long long X; cin >> X; long long ans = (long long) 1e18; for(int i = 0;i < (int)primes.size();i++) { int e = 0; long long Y = X; while(Y % primes[i] == 0) { Y /= primes[i]; e++; } bool ok = true; for(int j = 0;j <= 2 * e;j++) { if(ans / primes[i] < Y) { ok = false; break; } Y *= primes[i]; } if(ok) { ans = min(ans,Y); } //p ^ e * x -> (e + 1) * d(x) //p ^ 2e + 1 } cout << ans << "\n"; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); calc(); int tt = 1; cin >> tt; while(tt--) Main(); }