打表即可
#include<iostream>
#include<string.h>
#include<string>
#include<algorithm>
#include<stdio.h>
#include<map>
#include<set>
#define ULL unsigned long long int
using namespace std;
ULL pow2[40];
ULL pow3[40];
ULL pow5[40];
ULL pow7[40];
int li2;
int li3;
int li5;
int li7;
set<ULL> st;
void init()
{
li2=30;
li3=19;
li5=13;
li7=11;
st.clear();
pow2[0]=pow3[0]=pow5[0]=pow7[0]=1;
for(int i=1;i<=30;i++)
{
pow2[i]=pow2[i-1]*2;
pow3[i]=pow3[i-1]*3;
pow5[i]=pow5[i-1]*5;
pow7[i]=pow7[i-1]*7;
}
}
void DFS(int dep,ULL tmp)
{
if(dep==1)
{
for(int i=0;i<=30;i++)
{
st.insert(tmp*pow2[i]);
if(tmp*pow2[i]>1e10) continue;
else DFS(dep+1,tmp*pow2[i]);
}
}
if(dep==2)
{
for(int i=0;i<=19;i++)
{
st.insert(tmp*pow3[i]);
if(tmp*pow3[i]>1e10) continue;
else DFS(dep+1,tmp*pow3[i]);
}
}
if(dep==3)
{
for(int i=0;i<=13;i++)
{
st.insert(tmp*pow5[i]);
if(tmp*pow5[i]>1e10) continue;
else DFS(dep+1,tmp*pow5[i]);
}
}
if(dep==4)
{
for(int i=0;i<=11;i++)
{
st.insert(tmp*pow7[i]);
}
}
}
int main()
{
init();
DFS(1,1);
int t;
cin>>t;
while(t--)
{
ULL n;
scanf("%lld",&n);
if(st.count(n)!=0)
{
printf("%lld\n",n);
}
else
{
st.insert(n);
set<ULL> ::iterator iter=st.find(n);
iter++;
printf("%lld\n",*iter);
st.erase(n);
}
}
return 0;
}