
#include<bits/stdc++.h>
using namespace std;
const int N=200010;
int sum,ans[N],base,now,n;
int main()
{
int T;
scanf("%d",&T);
while (T--)
{
sum=0;
scanf("%d",&n);
for (int i=2; i<=n; i++)
{
if (i%2==0)
{
ans[i]=1;
}
else
{
base=1;
now=i;
while (now)
{
if ((now&1)==0)
{
break;
}
base<<=1;
now>>=1;
}
if (base>n)
{
sum++;
ans[i]=1;
}
else
{
ans[i]=base;
}
}
}
printf("%d
",sum);
for (int i=2; i<n; i++)
{
printf("%d ",ans[i]);
}
printf("%d
",ans[n]);
}
}

#include<bits/stdc++.h>
using namespace std;
long long n,k,kk,p,a[100010],b[100100][5];
int main()
{
int T;
scanf("%d",&T);
while (T--)
{
scanf("%lld%lld",&n,&k);
if (n==1&&k==1)
{
puts("yes");
puts("1");
continue;
}
if ((n*(n+1)/2)%k!=0||n==k)
{
puts("no");
continue;
}
puts("yes");
if ((n/k)%2==0)
{
a[1]=1;
p=k*2-1;
for (int i=1; i<n/k; i++)
{
if (i&1)
{
a[i+1]=a[i]+p;
}
else
{
a[i+1]=a[i]+1;
}
}
for (int i=1; i<=k; i++)
{
for (int j=1; j<=n/k; j++)
{
printf("%lld",a[j]);
if (j==n/k)
{
printf("
");
}
else
{
printf(" ");
}
if (j&1)
{
a[j]++;
}
else
{
a[j]--;
}
}
}
}
else
{
b[1][1]=n;
for (int i=2; i<=k; i++)
{
b[i][1]=n-i+1;
}
b[k/2+1][2]=n-k;
kk=0;
for (int i=k/2+2; i<=k; i++)
{
kk++;
b[i][2]=n-k-kk;
}
for (int i=1; i<=k/2; i++)
{
kk++;
b[i][2]=n-k-kk;
}
b[k/2+1][3]=n-k*3+1;
kk=0;
for (int i=k/2+2; i<=k; i++)
{
kk+=2;
b[i][3]=n-k*3+1+kk;
}
int p=n-k*3+1+kk+1;
kk=0;
for (int i=k/2;i>=1; i--)
{
kk+=2;
b[i][3]=p-kk;
}
a[1]=1;
p=k*2-1;
for (int i=1; i<=n/k-3; i++)
{
if (i&1)
{
a[i+1]=a[i]+p;
}
else
{
a[i+1]=a[i]+1;
}
}
for (int i=1; i<=k; i++)
{
if (n/k-3>=1)
for (int j=1; j<=n/k-3; j++)
{
printf("%lld ",a[j]);
if (j&1)
{
a[j]++;
}
else
{
a[j]--;
}
}
for (int j=n/k-2; j<=n/k; j++)
{
printf("%lld",b[i][j-n/k+3]);
if (j==n/k)
{
printf("
");
}
else
{
printf(" ");
}
}
}
}
}
}


#include<bits/stdc++.h>
using namespace std;
int a[100],res,k;
int main()
{
int T;
scanf("%d",&T);
while (T--)
{
for (int i=0; i<16; i++)
{
scanf("%d",&a[i]);
}
res=0;
for (int i=0; i<16; i++)
{
for (int j=i+1; j<16; j++)
{
if (a[i]>0&&a[j]>0&&a[i]>a[j])
{
res++;
}
}
}
for (int i=0; i<16; i++)
{
if (!a[i])
{
k=i/4;
break;
}
}
if (((3-k)%2)==(res%2))
{
printf("Yes
");
}
else
{
printf("No
");
}
}
}

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll ans,prime[10010],v[10010],tot,n,k;
void get_prime()
{
for (ll i=2; i<=10000; i++)
{
if (!v[i])
{
prime[tot++]=i;
}
for (ll j=0; prime[j]*i<=10000; j++)
{
v[prime[j]*i]=1;
if (i%prime[j]==0)
{
break;
}
}
}
}
ll check(ll l,ll r,ll n)
{
while (l<r)
{
ll mid=(l+r)>>1;
if (mid*mid*mid<n)
{
l=mid+1;
}
if (mid*mid*mid>n)
{
r=mid-1;
}
if (mid*mid*mid==n)
{
return mid;
}
}
return l;
}
int main()
{
ll T;
get_prime();
scanf("%lld",&T);
while (T--)
{
ans=0x3f3f3f3f;
scanf("%lld",&n);
for (ll i=0; i<tot; i++)
{
k=0;
while (n%prime[i]==0)
{
n=n/prime[i];
k++;
}
if (k) ans=min(ans,k);
}
if (n>1)
{
ll k2=sqrt(n);
ll k4=sqrt(k2);
if (k2*k2==n)
{
if (k4*k4*k4*k4==n)
{
ans=min(ans,4ll);
}
else
{
ans=min(ans,2ll);
}
}
else
{
ll k3=check(1,1e6,n);
if (k3*k3*k3==n) ans=min(ans,3ll);
else ans=1;
}
}
printf("%lld
",ans);
}
}


#include <bits/stdc++.h>
using namespace std;
const int N = 1000001;
const int maxn=1e6+10;
const int maxm=maxn*10;
struct Node
{
int val,l,r;
} node[maxm];
int tot,root[maxn];
int build(int l,int r)
{
int x=++tot;
if (l<r)
{
int mid=(l+r)>>1;
node[x].l=build(l,mid);
node[x].r=build(mid+1,r);
}
node[x].val=0;
return x;
}
int update(int rt,int l,int r,int x,int v)
{
node[++tot]=node[rt];
rt=tot;
if (l==r)
{
node[rt].val+=v;
return rt;
}
else
{
int mid=(l+r)>>1;
if (x<=mid) node[rt].l=update(node[rt].l,l,mid,x,v);
else
{
node[rt].r=update(node[rt].r,mid+1,r,x,v);
}
node[rt].val+=v;
return rt;
}
}
int query(int rt1,int rt2,int l,int r,int L,int R)
{
if (L<=l&&r<=R)
{
return node[rt2].val-node[rt1].val;
}
else
{
int mid=(l+r)>>1,ans=0;
if (L<=mid) ans+=query(node[rt1].l,node[rt2].l,l,mid,L,R);
if (mid<R) ans+=query(node[rt1].r,node[rt2].r,mid+1,r,L,R);
return ans;
}
}
int a[maxn],n,m,l,r,p,k;
int main()
{
int T;
scanf("%d",&T);
while (T--)
{
scanf("%d%d",&n,&m);
tot=0;
root[0]=build(1,N);
for (int i=1; i<=n; i++)
{
scanf("%d",&a[i]);
root[i]=update(root[i-1],1,N,a[i],1);
}
int ans=0;
while (m--)
{
scanf("%d%d%d%d",&l,&r,&p,&k);
l^=ans;
r^=ans;
p^=ans;
k^=ans;
if (l>r)
{
swap(l,r);
}
int L=0,R=N;
while (L<R)
{
int mid=(L+R)>>1;
int sum=query(root[l-1],root[r],1,N,max(0,p-mid),min(N,p+mid));
if (sum<k)
{
L=mid+1;
}
else
{
R=mid;
}
}
ans=R;
printf("%d
",R);
}
}
}