#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
#define maxm 125
#define mo 10007
using namespace std;
int n,B,M,V,S,T,i,j,k,p;
int f[maxm],ff[maxm],g[maxm],gg[maxm];
int F[1<<11];
int main(){
scanf("%d%d%d%d",&n,&B,&M,&V);
for(S=1;S<1<<B;S++){
memset(f,0,sizeof(f));
memset(g,0,sizeof(g));
for(i=0;i<B;i++) if ((S>>i)&1) g[i%M]++;
for(i=1;i<B;i++) if ((S>>i)&1) f[i%M]++;
p=B%M;
for(k=n-1;k;k/=2){
if (k&1){
memset(ff,0,sizeof(ff));
for(i=0;i<M;i++) if (f[i]) for(j=0;j<M;j++) if (g[j])
(ff[(i*p+j)%M]+=f[i]*g[j])%=mo;
memcpy(f,ff,sizeof(ff));
}
memset(gg,0,sizeof(gg));
for(i=0;i<M;i++) if (g[i]) for(j=0;j<M;j++) if (g[j])
(gg[(i*p+j)%M]+=g[i]*g[j]%mo)%=mo;
memcpy(g,gg,sizeof(gg));
p=p*p%M;
}
F[S]=f[V];
for(T=0;T<S;T++) if ((T&S)==T)
F[S]=(F[S]-F[T]+mo)%mo;
for(i=B-1;i>=0;i--) if ((S>>i)&1) printf("%d",i);
printf(" %d
",F[S]);
}
}