#include <bits/stdc++.h>
#define MOD 1000000007LL
using namespace std;
typedef long long ll;
typedef pair<int,int> P;

typedef vector<ll> vec;
typedef vector<vec> mat;

mat mul(mat &A,mat &B){
	mat C(A.size(),vec(B[0].size()));
	for(int i=0;i<A.size();i++){
		for(int k=0;k<B.size();k++){
			for(int j=0;j<B[0].size();j++){
				C[i][j]=(C[i][j]+(A[i][k]*B[k][j]%MOD))%MOD;
			}
		}
	}
	return C;
}

mat pow(mat A,ll n){
	mat B(A.size(),vec(A.size()));
	for(int i=0;i<A.size();i++){
		B[i][i]=1;
	}
	while(n>0){
		if(n&1)B=mul(B,A);
		A=mul(A,A);
		n>>=1;
	}
	return B;
}


int n,m,K;
ll p[10001];
ll nec[801];
ll res[30][801];
ll ans[2][801];

int main(void){
	scanf("%d%d%d",&n,&m,&K);
	mat B(n,vec(n));
	for(int i=0;i<m;i++){
		scanf("%d",&p[i]);
	}
	nec[0]++;
	for(int i=0;i<m;i++){
		int mo=p[i]%n;
		nec[mo]++;
	}
	for(int i=0;i<30;i++){
		for(int j=0;j<n;j++){
			for(int k=0;k<n;k++){
				if(i>0)res[i][(j+k)%n]+=(res[i-1][j]*res[i-1][k])%MOD;
				if(i==0)res[i][j]=nec[j];
				if(res[i][(j+k)%n]>=MOD)res[i][(j+k)%n]%=MOD;
			}
		}
	}
	int prev=0,now=1;
	ans[0][0]=1;
	for(int i=0;i<30;i++){
		if(K>>i & 1){
			for(int j=0;j<n;j++){
				for(int k=0;k<n;k++){
					ans[now][(j+k)%n]+=(ans[prev][j]*res[i][k])%MOD;
					if(ans[now][(j+k)%n]>=MOD)ans[now][(j+k)%n]%=MOD;
				}
			}
			swap(now,prev);
			memset(ans[now],0,sizeof(ans[now]));
		}
	}
	for(int i=0;i<n;i++){
		printf("%lld\n",ans[prev][i]);
	}
	return 0;
}