#include<bits/stdc++.h>
using namespace std;
int n,cnt[101],a[3000001],w,t,p,num,ans[3000001],b[3000001];
void upd(int x){while(1){if(!b[++cnt[x]])break;}}
int main(){
cin>>n>>w;for(int i=1;i<=n;i++)scanf("%d",&a[i]),p+=(a[i]==w);
for(int i=1;i<=n;i*=2)cnt[++t]=i;
while(p){
int f=0;
for(int i=t;i>=1;i--){
if(a[cnt[i]]==w){
ans[++num]=cnt[i];b[cnt[i]]=1;
for(int j=i;j<=t;j++)upd(j);
p--;f=1;break;
}
}
if(!f){
ans[++num]=cnt[1];b[cnt[1]]=1;
for(int i=1;i<=t;i++)upd(i);
}
}cout<<num<<endl;for(int i=1;i<=num;i++)printf("%d ",ans[i]);
return 0;
}