#include #include using namespace std; #define int long long #define REP(i,m,n) for(int i=(m);i<(n);i++) #define rep(i,n) REP(i,0,n) #define pb push_back #define all(a) a.begin(),a.end() #define rall(c) (c).rbegin(),(c).rend() #define mp make_pair #define endl '\n' //#define vec vector //#define mat vector > #define fi first #define se second //#define double long double typedef long long ll; typedef unsigned long long ull; typedef pair pll; //typedef long double ld; typedef complex Complex; const ll INF=1e9+7; const ll MOD=998244353; const ll inf=INF*INF; const ll mod=INF; const ll MAX=1000000; const double PI=acos(-1.0); typedef vector > mat; typedef vector vec; //Nのi乗根のfloor ll floor_root(ll a, ll k) { if(a <= 1 or k == 1) return a; if(k >= 64) return 1; if(k == 2) return sqrtl(a); if(a == LLONG_MAX) a--; auto p = [](ll x, ll y) { auto mul = [](const ll &x, const ll &y) { return (x <= LLONG_MAX / y ? x * y : LLONG_MAX); }; if(y == 0) return 1ULL; auto res = 1ULL; while(y) { if(y & 1) res = mul(res, x); x = mul(x, x); y >>= 1; } return res; }; ll res = (k == 3 ? cbrt(a) - 1 : pow(a, nextafter(1 / double(k), 0))); while(p(res + 1, k) <= a) res++; return res; } vector moebius(int n) { vector res(n,1), p(n); for(int i = 2; i < n; i++){ if(p[i] != 0)continue; p[i]=i; res[i] = -1; for(int j = i * 2; j < n; j += i) { if((j / i) % i == 0){ res[j] = 0; } res[j] = -res[j]; if(p[j]==0)p[j]=i; } } return res; } void solve(){ auto mob=moebius(60); vectora(60); ll t;cin>>t; while(t--){ ll k;cin>>k; ll l=0,r=k*k; while(r-l>1){ ll mid=(r+l)/2; ll sum=0; for(int i=59;i>=2;i--){ sum -= mob[i]*(floor_root(mid,i)-1); } if(sum>=k-1)r=mid; else l=mid; //cout<