#include #include #include using namespace std; using ll=long long; #define rep(i,n) for(int i=0;i=0;i--) #define all(v) v.begin(),v.end() #define rall(v) v.rbegin(),v.rend() template bool chmax(T &a, T b){if (a < b){a = b;return true;} else return false;} template bool chmin(T &a, T b){if (a > b){a = b;return true;} else return false;} const ll MOD=1e9+7; ll f(ll n,ll k,vector&inv){ if(k<0||n>N>>K; vectorV; ll b=2; while(b*b<=N){ int cnt=0; while(N%b==0){ N/=b; cnt++; } if(cnt>0)V.push_back(cnt); b++; } if(N>1)V.push_back(1); vectorinv(60); inv[1]=1; for (int i=2;i<60;i++){ inv[i]=MOD-inv[MOD%i]*(MOD/i)%MOD; } ll ans=1; for(auto x:V){ ll d=0; rep(i,x+1){ d+=f(K+i-1,i,inv); d%=MOD; } ans*=d; ans%=MOD; } cout<