#include<bits/stdc++.h>
using namespace std;
int MOD=1000000007;
int nfact[1000009];
int nfactPower[1000009];
long long int ans=1;
long long int power(long long int a,long long int k)
{
long long int res;
long long int temp;
if(k==0)
{
return 1;
}
temp=power(a,k/2);
res=((temp%MOD)*(temp%MOD))%MOD;
if(k%2==1)
{
res=((a%MOD)*(res%MOD))%MOD;
}
return res%MOD;
}
void primeFact(int a)
{
int i;
while(a%2==0)
{
//printf("2+");
a=a/2;
ans=((ans%MOD)/(nfactPower[2]%MOD))%MOD;
nfact[2]++;
nfactPower[2]=((nfactPower[2]%MOD)+(power(2,nfact[2])%MOD))%MOD;
ans=((ans%MOD)*(nfactPower[2]%MOD))%MOD;
}
for(i=3;i*i<=a;i+=2)
{
while(a%i==0)
{
//printf("%d+",i);
a=a/i;
ans=((ans%MOD)/(nfactPower[i]%MOD))%MOD;
nfact[i]++;
nfactPower[i]=((nfactPower[i]%MOD)+(power(i,nfact[i])%MOD))%MOD;
ans=((ans%MOD)*(nfactPower[i]%MOD))%MOD;
}
}
if(a>2)
{
//printf("%d",a);
ans=((ans%MOD)/(nfactPower[a]%MOD))%MOD;
nfact[a]++;
nfactPower[a]=((nfactPower[a]%MOD)+(power(a,nfact[a])%MOD))%MOD;
ans=((ans%MOD)*(nfactPower[a]%MOD))%MOD;
}
}
void print()
{
for(int i=0;i<20;i++)
{
printf("%d+",nfact[i]);
}
printf("\n");
for(int i=0;i<20;i++)
{
printf("%d+",nfactPower[i]);
}
printf("\n\n");
}
int main()
{
for(int i=0;i<1000009;i++)
{
nfact[i]=0;
nfactPower[i]=1;
}
//print();
int t,n,q,x;
long long int a;
scanf("%d%d",&n,&q);
primeFact(n);
//print();
a=n;
while(q--)
{
scanf("%d",&x);
primeFact(x);
//print();
printf("%lld\n",ans%MOD);
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50IE1PRD0xMDAwMDAwMDA3OwppbnQgbmZhY3RbMTAwMDAwOV07CmludCBuZmFjdFBvd2VyWzEwMDAwMDldOwpsb25nIGxvbmcgaW50IGFucz0xOwpsb25nIGxvbmcgaW50IHBvd2VyKGxvbmcgbG9uZyBpbnQgYSxsb25nIGxvbmcgaW50IGspCnsKICAgIGxvbmcgbG9uZyBpbnQgcmVzOwogICAgbG9uZyBsb25nIGludCB0ZW1wOwogICAgaWYoaz09MCkKICAgIHsKICAgICAgICByZXR1cm4gMTsKICAgIH0KICAgIHRlbXA9cG93ZXIoYSxrLzIpOwogICAgcmVzPSgodGVtcCVNT0QpKih0ZW1wJU1PRCkpJU1PRDsKICAgIGlmKGslMj09MSkKICAgIHsKICAgICAgICByZXM9KChhJU1PRCkqKHJlcyVNT0QpKSVNT0Q7CiAgICB9CiAgICByZXR1cm4gcmVzJU1PRDsKfQp2b2lkIHByaW1lRmFjdChpbnQgYSkKewogICAgaW50IGk7CiAgICB3aGlsZShhJTI9PTApCiAgICB7CiAgICAgICAgLy9wcmludGYoIjIrIik7CiAgICAgICAgICAgIGE9YS8yOwogICAgICAgICAgICBhbnM9KChhbnMlTU9EKS8obmZhY3RQb3dlclsyXSVNT0QpKSVNT0Q7CiAgICAgICAgICAgIG5mYWN0WzJdKys7CiAgICAgICAgICAgIG5mYWN0UG93ZXJbMl09KChuZmFjdFBvd2VyWzJdJU1PRCkrKHBvd2VyKDIsbmZhY3RbMl0pJU1PRCkpJU1PRDsKICAgICAgICAgICAgYW5zPSgoYW5zJU1PRCkqKG5mYWN0UG93ZXJbMl0lTU9EKSklTU9EOwogICAgfQogICAgZm9yKGk9MztpKmk8PWE7aSs9MikKICAgIHsKICAgICAgICB3aGlsZShhJWk9PTApCiAgICAgICAgewogICAgICAgICAgICAvL3ByaW50ZigiJWQrIixpKTsKICAgICAgICAgICAgYT1hL2k7CiAgICAgICAgICAgIGFucz0oKGFucyVNT0QpLyhuZmFjdFBvd2VyW2ldJU1PRCkpJU1PRDsKICAgICAgICAgICAgbmZhY3RbaV0rKzsKICAgICAgICAgICAgbmZhY3RQb3dlcltpXT0oKG5mYWN0UG93ZXJbaV0lTU9EKSsocG93ZXIoaSxuZmFjdFtpXSklTU9EKSklTU9EOwogICAgICAgICAgICBhbnM9KChhbnMlTU9EKSoobmZhY3RQb3dlcltpXSVNT0QpKSVNT0Q7CiAgICAgICAgfQogICAgfQogICAgaWYoYT4yKQogICAgewogICAgICAgIC8vcHJpbnRmKCIlZCIsYSk7CiAgICAgICAgYW5zPSgoYW5zJU1PRCkvKG5mYWN0UG93ZXJbYV0lTU9EKSklTU9EOwogICAgICAgICAgICBuZmFjdFthXSsrOwogICAgICAgICAgICBuZmFjdFBvd2VyW2FdPSgobmZhY3RQb3dlclthXSVNT0QpKyhwb3dlcihhLG5mYWN0W2FdKSVNT0QpKSVNT0Q7CiAgICAgICAgICAgIGFucz0oKGFucyVNT0QpKihuZmFjdFBvd2VyW2FdJU1PRCkpJU1PRDsKICAgIH0KCn0Kdm9pZCBwcmludCgpCnsKICAgIGZvcihpbnQgaT0wO2k8MjA7aSsrKQogICAgewogICAgICAgIHByaW50ZigiJWQrIixuZmFjdFtpXSk7CiAgICB9CiAgICBwcmludGYoIlxuIik7CiAgICBmb3IoaW50IGk9MDtpPDIwO2krKykKICAgIHsKICAgICAgICBwcmludGYoIiVkKyIsbmZhY3RQb3dlcltpXSk7CiAgICB9CiAgICAgcHJpbnRmKCJcblxuIik7Cn0KaW50IG1haW4oKQp7CiAgICBmb3IoaW50IGk9MDtpPDEwMDAwMDk7aSsrKQogICAgewogICAgICAgIG5mYWN0W2ldPTA7CiAgICAgICAgbmZhY3RQb3dlcltpXT0xOwogICAgfQogICAgLy9wcmludCgpOwogICAgaW50IHQsbixxLHg7CiAgICBsb25nIGxvbmcgaW50IGE7CiAgICBzY2FuZigiJWQlZCIsJm4sJnEpOwogICAgcHJpbWVGYWN0KG4pOwogICAgLy9wcmludCgpOwogICAgYT1uOwogICAgd2hpbGUocS0tKQogICAgewogICAgICAgICBzY2FuZigiJWQiLCZ4KTsKICAgICAgICAgcHJpbWVGYWN0KHgpOwogICAgICAgICAvL3ByaW50KCk7CiAgICAgICAgIHByaW50ZigiJWxsZFxuIixhbnMlTU9EKTsKICAgIH0KICAgIHJldHVybiAwOwp9