1 #include<cstdio>
2 #include<cstdlib>
3 #include<cstring>
4 #include<iostream>
5 #include<algorithm>
6 using namespace std;
7 #define Mod 1000000007
8 #define Maxn 300010
9 #define LL long long
10
11 int a[Maxn];
12 LL p[Maxn],ans[Maxn];
13
14 LL qpow(LL a,int b)
15 {
16 LL ans=1;
17 while(b)
18 {
19 if(b&1) ans=(ans*a)%Mod;
20 a=(a*a)%Mod;
21 b>>=1;
22 }
23 return ans;
24 }
25
26 LL get_c(int m,int n)
27 {
28 LL as=p[n];
29 as=as*qpow(p[m],Mod-2)%Mod;
30 as=as*qpow(p[n-m],Mod-2)%Mod;
31 return as;
32 }
33
34 int cnt[Maxn],cc[Maxn];
35
36 int main()
37 {
38 int n,m,k;
39 scanf("%d%d%d",&n,&m,&k);
40 k=n-k;
41 memset(cnt,0,sizeof(cnt));
42 memset(cc,0,sizeof(cc));
43 for(int i=1;i<=n;i++)
44 {
45 scanf("%d",&a[i]);
46 cc[a[i]]++;
47 }
48 for(int i=m;i>=1;i--)
49 {
50 for(int j=i;j<=m;j+=i) cnt[i]+=cc[j];
51 }
52 p[0]=1;
53 for(LL i=1;i<=n;i++) p[i]=(p[i-1]*i)%Mod;
54 for(int i=m;i>=1;i--)
55 {
56 if(cnt[i]<k) ans[i]=0;
57 else
58 {
59 ans[i]=get_c(k,cnt[i])*qpow(m/i-1,cnt[i]-k)%Mod*qpow(m/i,n-cnt[i])%Mod;
60 for(int j=2;j<=m/i;j++) ans[i]=(ans[i]+Mod-ans[i*j])%Mod;
61 }
62 }
63 for(int i=1;i<m;i++) printf("%lld ",ans[i]);
64 printf("%lld\n",ans[m]);
65 // printf("\n");
66 return 0;
67 }