#include<bits/stdc++.h>
#define ll long long int
#define pp pair<ll,ll>
#define fi first
#define si second
#define mod int(1e9+7)
using namespace std;
pp dp[1010][1010];
map<ll,ll>m;
set<ll>s;
pp add(pp a,pp b){
	pp c= make_pair(((a.fi*b.si)%mod+(b.fi*a.si)),(a.si*b.si)%mod);
	ll g=__gcd(c.fi,c.si);
	c.fi/=g;
	c.si/=g;
	return c;
}
ll power(ll x,ll n){
	if(!n)
		return 1;
	ll y=power(x,n/2);
	y=(y*y)%mod;
	if(n%2)
		return (x*y)%mod;
	return y;
}
void f(ll n,ll k){
	for(ll i=1;i*i<=n;i++)
		if(n%i==0){
			s.insert(i);
			s.insert(n/i);
		}
	ll j=0;
	for(auto it=s.begin();it!=s.end();it++,j++){
		m[j]=*it;
	}
	for(ll i=0,cnt;i<s.size();i++){
		cnt=0;
		for(ll j=0;j<=i;j++)
			if(m[i]%m[j]==0)
				cnt++;
		dp[i][0]=make_pair(m[i]%mod,1);
		for(ll r=1;r<=k;r++){
			for(ll j=0;j<=i;j++)
				if(m[i]%m[j]==0){
					if(!j)
						dp[i][r]=dp[j][r-1];
					else
						dp[i][r]=add(dp[i][r],dp[j][r-1]);
				}
			dp[i][r].si=(dp[i][r].si*cnt)%mod;
		}
	}
}
int main(){
	ll n,k,nu=0,de=0;
	cin>>n>>k;
	f(n,k);
	pp c=dp[int(s.size())-1][k];
	cout<<((c.fi*power(c.si,mod-2))%mod)<<endl;
	s.clear();
	m.clear();
}
