// #include using namespace std; #define fi first #define se second #define all(x) x.begin(), x.end() #define lch (o << 1) #define rch (o << 1 | 1) typedef double db; typedef long long ll; typedef unsigned int ui; typedef pair pint; typedef tuple tint; const int INF = 0x3f3f3f3f; const ll INF_LL = 0x3f3f3f3f3f3f3f3f; vector divs = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37}; void solve() { ll n; cin >> n; ll ans = INF_LL; for (auto d: divs) { int cnt = 0; ll x = n; while (x % d == 0) { x /= d; cnt++; } double est = 1.0 * n * pow(d, cnt + 1); if (est > INF_LL) continue; x = n; cnt++; while (cnt--) x *= d; ans = min(ans, x); } cout << ans << endl; } int main() { ios::sync_with_stdio(0); int t; cin >> t; while (t--) solve(); return 0; }