You are given an integer n. Check if n has an odd divisor, greater than one (does there exist such a number x (x > 1) that n is divisible by x and x is odd).

For example, if n=6, then there is x=3. If n=4, then such a number does not exist.

Input

The first line contains one integer t (1 ≤ t ≤ 10^4) — the number of test cases. Then t test cases follow.

Each test case contains one integer n (2 ≤ n ≤ 10^{14}).

Please note, that the input for some test cases won't fit into 32-bit integer type, so you should use at least 64-bit integer type in your programming language.

Output

For each test case, output on a separate line: 

  * "YES" if n has an odd divisor, greater than one; 
  * "NO" otherwise. 



You can output "YES" and "NO" in any case (for example, the strings yEs, yes, Yes and YES will be recognized as positive).

Example

Input


6
2
3
4
5
998244353
1099511627776


Output


NO
YES
NO
YES
YES
NO
#include <bits/stdc++.h>
#include<unordered_map>
using namespace std;
#define ll long long
#define lmin LONG_MIN
#define lmax LONG_MAX
#define imax INT_MAX
#define imin INT_MIN
#define ffor(i,a,b) for(int i=a;i<b;i++)
#define bfor(i,a,b) for(int i=a-1;i>=b;i--)
#define pb push_back
#define mset(f,a) memset(f,a,sizeof(f))
#define MAXN   1000001
#define mp make_pair
ll M=2999622427833;
ll dd=33;
ll sp[MAXN];
// unordered_map<ll,pair<ll,pair<ll,ll> > >mpp;
// ll p[MAXN];
// ll fact[200005];

ll max(ll x,ll y)
{
    if(x>y)
        return x;
    
    return y;
}
ll power(ll x ,ll y)
{
    if(y==0)
        return 1;
    
    ll t=power(x, y/2);
    
    t=((t%M)*(t%M))%M;
    
    if(y%2==1)
        t=((t%M)*(x%M))%M;
    
    return t;
    
}

ll min(ll x, ll y)
{
    if(x<y)
        return x;
    
    return y;
}


bool comp(pair<ll,ll>p1, pair<ll,ll>p2)
{
    if(p1.second<p2.second)
        return true;
    else if(p1.second==p2.second)
    {
        return p1.first<=p2.first;
    }
    else
    {
        return false;
    }
    
}



void siev() 
{ 
    sp[1] = 1; 
    for (ll i=2; i<MAXN; i++) 
        sp[i] = i; 
  
    for (ll i=4; i<MAXN; i+=2) 
        sp[i] = 2; 
  
    for (ll i=3; i*i<MAXN; i++) 
    { 
        if (sp[i] == i) 
        { 
            // marking SPF for all numbers divisible by i 
            for (int j=i*i; j<MAXN; j+=i) 
  
                if (sp[j]==j) 
                    sp[j] = i; 
        } 
    } 

    
} 

ll gcd(ll a, ll b)
{
    if (b == 0)
        return a;
    return gcd(b, a % b);
      
}

void dfs(vector<ll>tree[], ll s, ll p, ll par[])
{
    par[s]=p;

    ll i;

    for(i=0;i<tree[s].size();i++)
    {
        if(tree[s][i]!=p)
        {
            dfs(tree,tree[s][i],s,par);
        }
    }
}



void output()
{
    ll n;
    cin>>n;

    if(n%2)
    {
        cout<<"YES\n";
    }
    else
    {
        while(n%2==0)
            n=n/2;

        if(n%2 && n!=1)
        {
            cout<<"YES\n";
        }
        else
        {
            cout<<"NO\n";
        }
        
    }
    
    
}
 
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
   #ifndef ONLINE_JUDGE
    

    freopen("input.txt", "r", stdin);
    // for writing output to output.txt
    freopen("output.txt", "w", stdout);
    #endif 
    
    // siev();

    // for(ll i=2;i<MAXN;i++)
    // {
    //     if(sp[i]==i)
    //         v.pb(i);
    // }

    // p[0]=1;

    // for(ll i=1;i<MAXN;i++)
    //     p[i]=((p[i-1]%M)*dd)%M;
    
    ll t;
    t=1;
    cin>>t;

    ll i;

    // fact[0]=1;
               
    // for(i=1;i<=200000;i++)
    //     fact[i]=((fact[i-1]%M)*(i%M))%M;
    
    // cout<<sp[6]<<endl;
    while(t--)
        output();
}
