#pragma GCC optimize("Ofast") #define rd() ({long _v=0,_c;while(_c=*rp++-48,_c>=0)_v=_v*10+_c;_v;}) #define wt(v) {ulong _z=v;do*--wp=_z%10+48;while(_z/=10);} #define rrep3(v,s,e) for(long v=e;--v>=s;) typedef unsigned long ulong; char wbuf[1<<25]; int main(){ long n,s; { char rbuf[64]; read(0,rbuf,sizeof rbuf); char*rp=rbuf; n=rd(); s=rd(); } long k=0; char*wp=wbuf+sizeof wbuf; rrep3(i,1,n+1){ if(s>=i){ s-=i; *--wp=' '; wt(i); ++k; } } *--wp='\n'; wt(k); write(1,wp,wbuf+sizeof wbuf-wp); _exit(0); }