#include <bits/stdc++.h>
using namespace std;
#define MOD 1000000007
const int MAXN=1000000;
vector<int>spf(MAXN+1);
void build_spf(){
for(int i=1;i<=MAXN;i++)
spf[i]=i;
for(int i=2;i*i<=MAXN;i++){
if(spf[i]==i){
for(int j=i*i;j<=MAXN;j+=i){
if(spf[j]==j)
spf[j]=i;
}
}
}
}
int main(){
int N,M;
cin>>N>>M;
vector<int>A(N);
for(int i=0;i<N;i++)
cin>>A[i];
build_spf();
unordered_map<int,long long>factM;
for(int x=2;x<=M;x++){
int t=x;
while(t>1){
int p=spf[t];
factM[p]++;
t/=p;
}
}
for(int i=0;i<N;i++){
unordered_map<int,long long>mp=factM;
int x=A[i];
while(x>1){
int p=spf[x];
mp[p]++;
x/=p;
}
long long ans=1;
for(auto &it:mp){
ans=(ans*(it.second+1))%MOD;
}
cout<<ans<<" ";
}
cout<<"\n";
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIE1PRCAxMDAwMDAwMDA3CmNvbnN0IGludCBNQVhOPTEwMDAwMDA7Cgp2ZWN0b3I8aW50PnNwZihNQVhOKzEpOwoKdm9pZCBidWlsZF9zcGYoKXsKICAgIGZvcihpbnQgaT0xO2k8PU1BWE47aSsrKQogICAgICAgIHNwZltpXT1pOwoKICAgIGZvcihpbnQgaT0yO2kqaTw9TUFYTjtpKyspewogICAgICAgIGlmKHNwZltpXT09aSl7CiAgICAgICAgICAgIGZvcihpbnQgaj1pKmk7ajw9TUFYTjtqKz1pKXsKICAgICAgICAgICAgICAgIGlmKHNwZltqXT09aikKICAgICAgICAgICAgICAgICAgICBzcGZbal09aTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQoKaW50IG1haW4oKXsKICAgIGludCBOLE07CiAgICBjaW4+Pk4+Pk07CgogICAgdmVjdG9yPGludD5BKE4pOwogICAgZm9yKGludCBpPTA7aTxOO2krKykKICAgICAgICBjaW4+PkFbaV07CgogICAgYnVpbGRfc3BmKCk7CgogICAgdW5vcmRlcmVkX21hcDxpbnQsbG9uZyBsb25nPmZhY3RNOwoKICAgIGZvcihpbnQgeD0yO3g8PU07eCsrKXsKICAgICAgICBpbnQgdD14OwogICAgICAgIHdoaWxlKHQ+MSl7CiAgICAgICAgICAgIGludCBwPXNwZlt0XTsKICAgICAgICAgICAgZmFjdE1bcF0rKzsKICAgICAgICAgICAgdC89cDsKICAgICAgICB9CiAgICB9CgogICAgZm9yKGludCBpPTA7aTxOO2krKyl7CiAgICAgICAgdW5vcmRlcmVkX21hcDxpbnQsbG9uZyBsb25nPm1wPWZhY3RNOwogICAgICAgIGludCB4PUFbaV07CgogICAgICAgIHdoaWxlKHg+MSl7CiAgICAgICAgICAgIGludCBwPXNwZlt4XTsKICAgICAgICAgICAgbXBbcF0rKzsKICAgICAgICAgICAgeC89cDsKICAgICAgICB9CgogICAgICAgIGxvbmcgbG9uZyBhbnM9MTsKICAgICAgICBmb3IoYXV0byAmaXQ6bXApewogICAgICAgICAgICBhbnM9KGFucyooaXQuc2Vjb25kKzEpKSVNT0Q7CiAgICAgICAgfQoKICAgICAgICBjb3V0PDxhbnM8PCIgIjsKICAgIH0KCiAgICBjb3V0PDwiXG4iOwogICAgcmV0dXJuIDA7Cn0K