#include #include using namespace std; using ll=long long; using ull=unsigned long long; #define rep(i,n) for(int i=0; i<(n); i++) using mll=atcoder::static_modint<1000000007>; ull powm(ull a,ull i,ull m){ if(i==0) return 1; ull res=powm(a*a%m,i/2,m); if(i%2) res=res*a%m; return res; } int N,K; vector ans; int main(){ scanf("%d%d",&N,&K); int s = (1+N-powm(2,K,N))%N; vector G; G.push_back(s); while((G.back()+2)%N!=s) G.push_back((G.back()+2)%N); int N2=G.size(); mll g = mll(2).pow(K).inv(); mll spread_mod = powm(2,K,N2)%N2; mll spread_times = (mll(2).pow(K)-spread_mod)/N2; vector ans2(N2,spread_times*g); rep(i,spread_mod.val()) ans2[i]+=g; ans.assign(N,mll(0)); rep(i,N2) ans[G[i]]=ans2[i]; rep(i,N) printf("%u\n",ans[i].val()); return 0; }