#include Modint a[1d4+1]; { char*rp=static_cast(mmap(0,24l<<10,1,2,0,0)); ll n=0; {int c;while(c=*rp++-48,c>=0)n=n*10+c;} ll k=0; {int c;while(c=*rp++-48,c>=0)k=k*10+c;} if(n>30){ Modint f,s; rep(i,n){ int v=*rp-48; rp+=2; f+=a[i]=v; } a[n]=f; s=f+f; int j=0; rep(i,n+1,k){ a[j]=f=f+f-a[j]; if(++j>n) j=0; s+=f; } wt(f,s); }else{ rep(i,n){ int v=*rp-48; rp+=2; a[i]=v; } Polynomial b,c,m; b.change(0,1); c.change(1,1); m.change(0,1); m.change(n,-2); m.change(n+1,1); for(int j=40;j>=0;--j){ b*=b; b%=m; if(k-n&1l<