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],z[n]{}; z[0]=m>2?powmod(a[0],sum[i,2,m](k[i]),1009):1; ll c=k[0]+(m>1?k[1]*1009:0); while(c){ if(c&1){ f(n,a,z); } c>>=1; f(n,a,a); } wt((ll)z(n)); }