https://codeforces.com/contest/1656/problem/D
 看n是否是让k个数分别%k的和,输出任意符合的k
 构造题
 n=(1+k)k/2+mk(m>=0)
 2n=(1+k)k+2mk
 2n=k(2m+k+1)
k是奇数的话,2m+k+1就是偶数
 k是偶数的话,2m+k+1就是奇数
 也就是构造把2*n分解成奇数和偶数乘积
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        ll n;
        scanf("%lld",&n);
        ll te=1;
        while(n%2==0)
        {
            n/=2;
            te*=2;
        }
        if(n==1)//是2的n次方,没法分成奇数和偶数的乘积
            printf("-1\n");
        else
            printf("%lld\n",min(2*te,n));
    }
}










