#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
const ll M=1e6;
vector<ll>spf(M+1);
void cspf() {
for(ll i=2;i<=M;i++)spf[i]=i;
for(ll i=2;i*i<=M;i++) {
if(spf[i]==i) {
for(ll j=i*i;j<=M;j+=i) {
if(spf[j]==j)spf[j]=i;
}
}
}
}
unordered_map<ll,ll>cl(ll v) {
unordered_map<ll,ll>m;
while(v!=1) {
ll d=spf[v];
m[d]++;
v/=d;
}
return m;
}
int main() {
ll n,m;
cin>>n>>m;
unordered_map<ll,ll>b;
cspf();
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>temp=b;
ll g=1;
cin>>arr[i];
unordered_map<ll,ll>a=cl(arr[i]);
for(auto it=a.begin();it!=a.end();++it){
temp[it->first]+=it->second;
}
for(auto it=temp.begin();it!=temp.end();++it) {
g=(g*(it->second+1))%1000000007;
}
cout<<g<<" ";
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnR5cGVkZWYgbG9uZyBsb25nIGludCBsbDsKY29uc3QgbGwgTT0xZTY7CnZlY3RvcjxsbD5zcGYoTSsxKTsKCnZvaWQgY3NwZigpIHsKICAgIGZvcihsbCBpPTI7aTw9TTtpKyspc3BmW2ldPWk7CiAgICBmb3IobGwgaT0yO2kqaTw9TTtpKyspIHsKICAgICAgICBpZihzcGZbaV09PWkpIHsKICAgICAgICAJCiAgICAgICAgICAgIGZvcihsbCBqPWkqaTtqPD1NO2orPWkpIHsKICAgICAgICAgICAgICAgIGlmKHNwZltqXT09ailzcGZbal09aTsKICAgICAgICAgICAgCiAgICAgICAgICAgIAkKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQoKdW5vcmRlcmVkX21hcDxsbCxsbD5jbChsbCB2KSB7CiAgICB1bm9yZGVyZWRfbWFwPGxsLGxsPm07CiAgICB3aGlsZSh2IT0xKSB7CiAgICAgICAgbGwgZD1zcGZbdl07CiAgICAgICAgbVtkXSsrOwogICAgICAgIHYvPWQ7CiAgICB9CiAgICByZXR1cm4gbTsKfQoKCgppbnQgbWFpbigpIHsKICAgIGxsIG4sbTsKICAgIGNpbj4+bj4+bTsKICAgIHVub3JkZXJlZF9tYXA8bGwsbGw+YjsKICAgIGNzcGYoKTsKICAgIAogICAgZm9yKGxsIGk9MjtpPD1tO2krKykgewogICAgICAgIHVub3JkZXJlZF9tYXA8bGwsbGw+YT1jbChpKTsKICAgICAgICBmb3IoYXV0byBpdD1hLmJlZ2luKCk7aXQhPWEuZW5kKCk7KytpdCliW2l0LT5maXJzdF0rPWl0LT5zZWNvbmQ7CiAgICB9CiAgICAKICAgIGxsIGFycltuKzFdPXswfTsKICAgIGZvcihsbCBpPTE7aTw9bjtpKyspIHsKICAgICAgICB1bm9yZGVyZWRfbWFwPGxsLGxsPnRlbXA9YjsKICAgICAgICAKICAgICAgICBsbCBnPTE7CiAgICAgICAgY2luPj5hcnJbaV07CiAgICAgICAgdW5vcmRlcmVkX21hcDxsbCxsbD5hPWNsKGFycltpXSk7CiAgICAgICAgCiAgICAgICAgZm9yKGF1dG8gaXQ9YS5iZWdpbigpO2l0IT1hLmVuZCgpOysraXQpewogICAgICAgIAl0ZW1wW2l0LT5maXJzdF0rPWl0LT5zZWNvbmQ7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGZvcihhdXRvIGl0PXRlbXAuYmVnaW4oKTtpdCE9dGVtcC5lbmQoKTsrK2l0KSB7CiAgICAgICAgICAgIGc9KGcqKGl0LT5zZWNvbmQrMSkpJTEwMDAwMDAwMDc7CiAgICAgICAgfQogICAgICAgIGNvdXQ8PGc8PCIgIjsKICAgIH0KICAgIHJldHVybiAwOwp9Cg==