#include <bits/stdc++.h>
using namespace std;
#define lli long long int
lli sum_prime_fac[1000001];
void PSIEVE(){
sum_prime_fac[1000001] = {0};
for(int i=2;i<=1000000;i++){
if(!sum_prime_fac[i]){
for(int j=i;j<=1000000;j+=i)
sum_prime_fac[j]+=i;
}
}
}
lli inverse(lli a,lli b,lli p){
lli an=1;
while(b){
if(b%2)
an=(an*1ll*a)%p;
a=(a*1ll*a)%p;
b/=2;
}
return an;
}
int getSubsets(int k, int n, vector<int> arr) {
PSIEVE();
long int mod = 1000000007;
int sum=0,i,j;
for(i=0;i<arr.size();i++)
sum= (sum%1000000 + sum_prime_fac[arr[i]]%1000000)%1000000;
lli fac1=1,fac2=1,fac3=1;
for(int i=1;i<=sum+k-1;i++)
fac1 = (fac1*1LL*i)%mod;
for(int i=1;i<=sum;i++)
fac2 = (fac2*1LL*i)%mod;
for(int i=1;i<k;i++)
fac3 = (fac3*1LL*i)%mod;
lli fac2in = inverse(fac2,mod-2,mod);
lli fac3in = inverse(fac3,mod-2,mod);
fac1 = ((fac1%mod)*(fac2in%mod))%mod;
fac1 = ((fac1%mod)*(fac3in%mod))%mod;
return(fac1);
}
using namespace std;
int main() {
vector<int>vec({1,2,6});
int n=3;
int k=3;
cout<<getSubsets(3,3,vec);
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgbGxpIGxvbmcgbG9uZyBpbnQKbGxpIHN1bV9wcmltZV9mYWNbMTAwMDAwMV07CnZvaWQgUFNJRVZFKCl7CiAgICBzdW1fcHJpbWVfZmFjWzEwMDAwMDFdID0gezB9OwogICAgZm9yKGludCBpPTI7aTw9MTAwMDAwMDtpKyspewogICAgICAgICAgICBpZighc3VtX3ByaW1lX2ZhY1tpXSl7CiAgICAgICAgICAgICAgICAgICAgZm9yKGludCBqPWk7ajw9MTAwMDAwMDtqKz1pKQogICAgICAgICAgICAgICAgICAgICAgICBzdW1fcHJpbWVfZmFjW2pdKz1pOwogICAgICAgICAgICB9CiAgICB9Cn0KCmxsaSBpbnZlcnNlKGxsaSBhLGxsaSBiLGxsaSBwKXsKICAgIGxsaSBhbj0xOwogICAgd2hpbGUoYil7CiAgICAgICAgaWYoYiUyKQogICAgICAgICAgICBhbj0oYW4qMWxsKmEpJXA7CiAgICAgICAgYT0oYSoxbGwqYSklcDsKICAgICAgICBiLz0yOwogICAgfQogICAgcmV0dXJuIGFuOwp9CgppbnQgZ2V0U3Vic2V0cyhpbnQgaywgaW50IG4sIHZlY3RvcjxpbnQ+IGFycikgewogICAgUFNJRVZFKCk7CiAgICBsb25nIGludCBtb2QgPSAxMDAwMDAwMDA3OwogICAgaW50IHN1bT0wLGksajsKICAgIGZvcihpPTA7aTxhcnIuc2l6ZSgpO2krKykKICAgICAgICBzdW09IChzdW0lMTAwMDAwMCArIHN1bV9wcmltZV9mYWNbYXJyW2ldXSUxMDAwMDAwKSUxMDAwMDAwOwogICAgbGxpIGZhYzE9MSxmYWMyPTEsZmFjMz0xOwogICAgZm9yKGludCBpPTE7aTw9c3VtK2stMTtpKyspCiAgICAgICAgZmFjMSA9IChmYWMxKjFMTCppKSVtb2Q7CiAgICBmb3IoaW50IGk9MTtpPD1zdW07aSsrKQogICAgICAgIGZhYzIgPSAoZmFjMioxTEwqaSklbW9kOwogICAgZm9yKGludCBpPTE7aTxrO2krKykKICAgICAgICBmYWMzID0gKGZhYzMqMUxMKmkpJW1vZDsKICAgIGxsaSBmYWMyaW4gPSBpbnZlcnNlKGZhYzIsbW9kLTIsbW9kKTsKICAgIGxsaSBmYWMzaW4gPSBpbnZlcnNlKGZhYzMsbW9kLTIsbW9kKTsKICAgIGZhYzEgPSAoKGZhYzElbW9kKSooZmFjMmluJW1vZCkpJW1vZDsKICAgIGZhYzEgPSAoKGZhYzElbW9kKSooZmFjM2luJW1vZCkpJW1vZDsKICAgIHJldHVybihmYWMxKTsKfQp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKSB7Cgl2ZWN0b3I8aW50PnZlYyh7MSwyLDZ9KTsKCWludCBuPTM7CglpbnQgaz0zOwoJY291dDw8Z2V0U3Vic2V0cygzLDMsdmVjKTsKCXJldHVybiAwOwp9