void f(ll n,double*a,double*r){ convolution(a,n,r,n,r,n); rep(i,n){ r[i]=fmod(floor(r[i]+.5),1009); } } { ll@m++,@n++,@k[m]; double@a[n]; double z[n]{1}; rep(i,m){ double b[n]{1}; ll c=k[i]; ll d=1009; while(d){ if(c&1){ f(n,a,z); } c>>=1; if(d&1){ f(n,a,b); } d>>=1; f(n,a,a); } rep(j,n){ a[j]=b[j]; } } wt((ll)z(n)); }