#include<bits/stdc++.h>
using namespace std;
set<int>s;
int main()
{
int n,h,cn=1,a[100001]={0},k=0,sum=0;
scanf("%d",&n);
printf("1\n");
printf("%d\n",n);
h=n;
while(1){//找出哪几位在二进制下为0
if(!(h&1)){
a[k]=cn;
k++;
}
cn=cn2;
h=h>>1;
if(h==0)
break;
}
for(int j=0;j<k;j++)
sum+=a[j];//得出满足题意的数的位不能为0的集合
for(int i=0;i<=n;i++){
if(!(i&sum))//循环找出满足二进制数位在那几位不为0的条件
s.insert(i);
}
set<int>:: iterator it;
printf("%d\n",s.size());
for(it=s.begin();it!=s.end();it++)
printf("%d\n",</int>
it);
return 0;
}</int>