//枚举 2n 的质因子a ,2n/a = b, ap - bq = 1, 找到 bq(min)
#include<bits/stdc++.h>
const int MA = 1e6+100;
typedef long long ll;
int t, vis[MA],pri[MA],prinum,cnt;
ll n,fac[50];
using namespace std;
void exgcd(ll a, ll b, ll& d, ll& x, ll& y){
if(!b) { x = 1, y = 0; d = a;}
else { exgcd(b, a%b, d, y, x); y -= x*(a/b);}
}
void init(){// 素数表
for(int i = 2; i <= MA-100; i++)
{
if(!vis[i]) pri[++prinum] = i;
for(int j = 1; j <= prinum && pri[j]*i <= MA-100; j++) {
vis[pri[j]*i] = 1;
if(i % pri[j] == 0) break;
}
}
}
ll calc(ll a, ll b){
if(b == 1) return a-1;
ll d,x,y;
exgcd(a, b, d, x, y);
//x = (x%b+b)%b;
if(a*x <= 1) x += b;// bq >= 0, so ap=bq+1 ap >=1 通解x=x0+kb, y = y0-ka
return a*x-1;
}
ll dfs(ll num, ll a, ll b){
if(num > cnt) return calc(a, b);
return min(dfs(num+1, a*fac[num], b), dfs(num+1, a, b*fac[num]));
}
int main(){
init();
cin>>t;
while(t--) {
cin>>n;
n <<= 1;
cnt = 0;
for(int i = 1; i <= prinum; i++) {
if(n % pri[i]) continue;
fac[++cnt] = 1;
while(n%pri[i] == 0)
{
n /= pri[i];
fac[cnt] *= pri[i];
}
}
if(n > 1) fac[++cnt] = n;
ll ans = dfs(1,1,1);
cout<< ans <<endl;
}
return 0;
}/*
5
2
4
6
8
10
样例输出 1
3
7
3
15
4
*/