#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
const ll mx=1000000;
vector<ll> spf(mx+1);
void cspf() {
for(ll x=2;x<=mx;x++) spf[x]=x;
for(ll x=2;x*x<=mx;x++) {
if(spf[x]==x) {
for(ll y=x*x;y<=mx;y+=x) {
if(spf[y]==y) spf[y]=x;
}
}
}
}
unordered_map<ll,ll> cl(ll v) {
unordered_map<ll,ll> a;
while(v!=1) {
ll d=spf[v];
a[d]++;
v/=d;
}
return a;
}
int main() {
ll n,m;
cin>>n>>m;
unordered_map<ll,ll> b;
cspf();
ll md=1e9+7;
for(ll i=2;i<=m;i++) {
unordered_map<ll,ll> a=cl(i);
for(auto it=a.begin();it!=a.end();++it) {
b[it->first]+=it->second;
}
}
ll arr[n+1]={0};
for(ll i=1;i<=n;i++) {
unordered_map<ll,ll> b5=b;
ll g=1;
cin>>arr[i];
unordered_map<ll,ll> a=cl(arr[i]);
for(auto it=a.begin();it!=a.end();++it)
{
b5[it->first]+=it->second;
}
for(auto it=b5.begin();it!=b5.end();++it) {
g=(g*((it->second+1)%md))%md;
}
cout<<g<<" ";
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnR5cGVkZWYgbG9uZyBsb25nIGludCBsbDsKCmNvbnN0IGxsIG14PTEwMDAwMDA7CnZlY3RvcjxsbD4gc3BmKG14KzEpOwoKdm9pZCBjc3BmKCkgewogICAgZm9yKGxsIHg9Mjt4PD1teDt4KyspIHNwZlt4XT14OwogICAgZm9yKGxsIHg9Mjt4Kng8PW14O3grKykgewogICAgCQogICAgICAgIGlmKHNwZlt4XT09eCkgewogICAgICAgICAgICBmb3IobGwgeT14Kng7eTw9bXg7eSs9eCkgewogICAgICAgICAgICAJCiAgICAgICAgICAgICAgICBpZihzcGZbeV09PXkpIHNwZlt5XT14OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAKICAgIH0KfQoKdW5vcmRlcmVkX21hcDxsbCxsbD4gY2wobGwgdikgewogICAgdW5vcmRlcmVkX21hcDxsbCxsbD4gYTsKICAgIHdoaWxlKHYhPTEpIHsKICAgICAgICBsbCBkPXNwZlt2XTsKICAgICAgICAKICAgICAgICBhW2RdKys7CiAgICAgICAgdi89ZDsKICAgIAogICAgCQogICAgfQogICAgcmV0dXJuIGE7Cn0KCmludCBtYWluKCkgewogICAgbGwgbixtOwogICAgY2luPj5uPj5tOwogICAgCiAgICB1bm9yZGVyZWRfbWFwPGxsLGxsPiBiOwogICAgCiAgICBjc3BmKCk7CiAgICBsbCBtZD0xZTkrNzsKICAgIGZvcihsbCBpPTI7aTw9bTtpKyspIHsKICAgICAgICB1bm9yZGVyZWRfbWFwPGxsLGxsPiBhPWNsKGkpOwogICAgICAgIAogICAgICAgIGZvcihhdXRvIGl0PWEuYmVnaW4oKTtpdCE9YS5lbmQoKTsrK2l0KSB7CiAgICAgICAgCWJbaXQtPmZpcnN0XSs9aXQtPnNlY29uZDsKICAgICAgICAJCiAgICAgICAgfQogICAgfQogICAgCiAgICBsbCBhcnJbbisxXT17MH07CiAgICBmb3IobGwgaT0xO2k8PW47aSsrKSB7CiAgICAgICAgdW5vcmRlcmVkX21hcDxsbCxsbD4gYjU9YjsKICAgICAgICBsbCBnPTE7CiAgICAgICAgCiAgICAgICAgY2luPj5hcnJbaV07CiAgICAgICAgdW5vcmRlcmVkX21hcDxsbCxsbD4gYT1jbChhcnJbaV0pOwogICAgICAgIAogICAgICAgIGZvcihhdXRvIGl0PWEuYmVnaW4oKTtpdCE9YS5lbmQoKTsrK2l0KQogICAgICAgIHsKICAgICAgICAJCiAgICAgICAgCSBiNVtpdC0+Zmlyc3RdKz1pdC0+c2Vjb25kOwogICAgICAgIAkgCiAgICAgICAgfQogICAgICAgIGZvcihhdXRvIGl0PWI1LmJlZ2luKCk7aXQhPWI1LmVuZCgpOysraXQpIHsKICAgICAgICAJZz0oZyooKGl0LT5zZWNvbmQrMSklbWQpKSVtZDsKICAgICAgICAJCiAgICAgICAgfQogICAgICAgIGNvdXQ8PGc8PCIgIjsKICAgIH0KICAgIHJldHVybiAwOwp9Cg==