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); } } void g(ll n,double*r){ convolution(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}; ll b=a[0]; ll c=k[0]; while(c){ if(c&1){ f(n,a,z); } c>>=1; g(n,a); } b=powmod(b,sum[i,1,m](k[i]),1009); wt((ll)z(n)*b%1009); }