#pragma GCC optimize("Ofast") #pragma GCC target("avx2") char*mmap(); #define RD(v) int v=0;{int _c;while(_c=*rp++-48,_c>=0)v=v*10+_c;} char wbuf[1<<28]; #define MD 1000000007 long modpow(long a, long b, long m){ long r=1; while(b){ if(b&1){ r=r*a%m; } b>>=1; a=a*a%m; } return r; } int inverse(int a){ int b=MD; int u=1; int v=0; while(b){ int q=a/b,t; t=b, b=a-q*b, a=t; t=v, v=u-q*v, u=t; } if(u<0){ u+=MD; } return u; } char wbuf[1<<28]; char s[5][12]; main(){ char*rp=mmap(0l,1l<<28,1,2,0,0ll); RD(n); RD(k); int r=modpow(2,k-1,n); int q=(modpow(2,k-1,MD)-r+MD)%MD*inverse(n)*(n&1?2:4)%MD; int d=modpow((MD+1)/2,k,MD); q=1l*q*d%MD; for(int i=0;i<5;++i){ sprintf(s[i],"%10d\n",q); q=(q+d)%MD; } r*=2; char*wp=wbuf; if(n&1){ for(int i=0;i