#include<cmath>#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#define For(i, a, b) for (i = a; i <= b; i++)#define Tree(u) for (int e = adj[u], v; e; e = nxt[e]) if ((v = go[e]) != fu)inlineintread(){int res =0;bool bo =0;char c;while(((c =getchar())<'0'|| c >'9')&& c !='-');if(c =='-') bo =1;else res = c -48;while((c =getchar())>='0'&& c <='9')
res =(res <<3)+(res <<1)+(c -48);return bo ?~res +1: res;}constint N =5e4+5, M = N <<1, E =155, ZZQ =10007;int n, k, ecnt, nxt[M], adj[N], go[M], f[N][E], g[N][E], S[E][E], fac[E];voidadd_edge(int u,int v){
nxt[++ecnt]= adj[u]; adj[u]= ecnt; go[ecnt]= v;
nxt[++ecnt]= adj[v]; adj[v]= ecnt; go[ecnt]= u;}voiddfs1(int u,int fu){int i;
f[u][0]=1;Tree(u){dfs1(v, u);
f[u][0]+= f[v][0];
For (i,1, k)
f[u][i]=(f[u][i]+ f[v][i]+ f[v][i -1])% ZZQ;}}voiddfs2(int u,int fu){int i;
For (i,0, k){int tmp =(g[u][i]+(i ? g[u][i -1]:0))% ZZQ;Tree(u) tmp =(tmp + f[v][i]+(i ? f[v][i -1]:0))% ZZQ;Tree(u) g[v][i]=(tmp - f[v][i]-(i ? f[v][i -1]:0)+ ZZQ + ZZQ +(!i))% ZZQ;}Tree(u)dfs2(v, u);}intmain(){int i, j, x, y, L, now, A, B, Q;
n =read(); k =read(); L =read(); now =read(); A =read();
B =read(); Q =read();
For (i,1, n -1){
now =(now * A + B)% Q;int tmp = i < L ? i : L;
x = i - now % tmp; y = i +1;add_edge(x, y);}
S[0][0]= fac[0]=1;
For (i,1, k) fac[i]=1ll* fac[i -1]* i % ZZQ;
For (i,1, k) For (j,1, i)
S[i][j]=(S[i -1][j -1]+ j * S[i -1][j])% ZZQ;dfs1(1,0);dfs2(1,0);
For (i,1, n){int ans =0;
For (j,0, k)
ans =(S[k][j]* fac[j]% ZZQ *(f[i][j]+ g[i][j]+(j ? g[i][j -1]:0))+ ans)% ZZQ;printf("%d\n", ans);}return0;}