#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define MEM(a,b) memset(a,(b),sizeof(a)) #define MAX(a,b) ((a) > (b) ? (a) : (b)) #define MIN(a,b) ((a) < (b) ? (a) : (b)) #define MP make_pair #define pb push_back #define inf 1000000000 #define M 1000000007 #define maxn (1<<30) #define maxt 5000 typedef long long LL; typedef pair pl; typedef vector vi; typedef vector vs; typedef vector vd; int n; int main() { int n,i,j,k,tests=20,cs=0,t=0,a,b; srand(time(NULL)); scanf("%d",&tests); assert(tests>=1 && tests<=maxt); while(tests--) { scanf("%d",&n); assert(n>=1 && n<=maxn); if(n==1) // special case { printf("%d\n",2); continue; } int ans=-1; for(i=1;i<=30 && ans<0;i++) // only the cases of the form 2^x-1 have solutions { int p=(1<