#include #include const int MaxN=265000; int f[MaxN],last[MaxN],head[MaxN],next[MaxN]; int r[MaxN],p[MaxN],a[MaxN*4]; bool used[MaxN]; int n,m,z; void init(){ //freopen("2131.in","r",stdin); //freopen("2131.out","w",stdout); scanf("%d%d",&m,&n); for(int i=0;i>1;i>1)-1;i;--i)a[i]=a[i+i]+a[i+i+1]; } int remove(int p){ int i=1; while(i0;--i){ if(used[i]){ for(j=head[find(i)];j;j=next[j]) r[remove(p[j-1])]=j; while(used[i] && i)--i; } } for(i=n;i;--i)if(r[i])break; printf("%d\n",i); for(j=1;j<=i;++j){ if(j>1)printf(" "); printf("%d",r[j]); } printf("\n"); } int main(){ init(); solve(); }