#include <bits/stdc++.h>
using namespace std;
long long n,dem,x;
long long a[101];
long long res=1;
#define ll long long
#define mod 1000000007
void pr(long x)
{
for (long i=2;i*i<=x;i++)
{
if (x%i==0)
{
a[++dem]=i;
}
while (x%i==0)
{
x/=i;
}
}
if (x!=1)
{
a[++dem]=x;
}
}
long long mu(long long a, long long b) {
if (!b)
return 1;
int c = mu(a, b / 2);
c = (1LL * c * c) % mod;
if (b % 2)
c = (1LL * c * a) % mod;
return c;
}
void tinh(long long k)
{
long long v=k;
while (k<=n)
{
long long c=k*v;
res=(res)*(mu(k,(n/k)-(n/c)));
res%=mod;
if (k>(1e18/v)) return ;
k*=v;
}
}
void xuli()
{
pr(x);
for (long i=1;i<=dem;i++)
{
tinh(a[i]);
}
cout << (res)%mod ;
}
int main()
{
// freopen("in.inp","r",stdin);
// freopen("out.out","w",stdout);
cin >> x >> n ;
xuli();
/// cout << mu(x,n);
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmxvbmcgbG9uZyBuLGRlbSx4Owpsb25nIGxvbmcgYVsxMDFdOwpsb25nIGxvbmcgcmVzPTE7CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgbW9kIDEwMDAwMDAwMDcKdm9pZCBwcihsb25nIHgpCnsKICAgIGZvciAobG9uZyBpPTI7aSppPD14O2krKykKICAgIHsKICAgICAgICBpZiAoeCVpPT0wKQogICAgICAgIHsKICAgICAgICAgICAgYVsrK2RlbV09aTsKICAgICAgICB9CiAgICAgICAgd2hpbGUgKHglaT09MCkKICAgICAgICB7CiAgICAgICAgICAgIHgvPWk7CiAgICAgICAgfQogICAgfQogICAgaWYgKHghPTEpCiAgICB7CiAgICAgICAgYVsrK2RlbV09eDsKICAgIH0KfQpsb25nIGxvbmcgbXUobG9uZyBsb25nIGEsIGxvbmcgbG9uZyBiKSB7CglpZiAoIWIpCgkJcmV0dXJuIDE7CglpbnQgYyA9IG11KGEsIGIgLyAyKTsKCWMgPSAoMUxMICogYyAqIGMpICUgbW9kOwoJaWYgKGIgJSAyKQoJCWMgPSAoMUxMICogYyAqIGEpICUgbW9kOwoJcmV0dXJuIGM7Cn0Kdm9pZCB0aW5oKGxvbmcgbG9uZyBrKQp7CiAgICBsb25nIGxvbmcgdj1rOwogICAgd2hpbGUgKGs8PW4pCiAgICB7CiAgICAgICAgbG9uZyBsb25nIGM9ayp2OwogICAgICAgIHJlcz0ocmVzKSoobXUoaywobi9rKS0obi9jKSkpOwogICAgICAgIHJlcyU9bW9kOwogICAgICAgIGlmIChrPigxZTE4L3YpKSByZXR1cm4gOwogICAgICAgIGsqPXY7CiAgICB9Cn0Kdm9pZCB4dWxpKCkKewogICAgcHIoeCk7CiAgICBmb3IgKGxvbmcgaT0xO2k8PWRlbTtpKyspCiAgICB7CiAgICAgICAgdGluaChhW2ldKTsKICAgIH0KICAgIGNvdXQgPDwgKHJlcyklbW9kICA7Cn0KaW50IG1haW4oKQp7Ci8vICAgIGZyZW9wZW4oImluLmlucCIsInIiLHN0ZGluKTsKLy8gICAgZnJlb3Blbigib3V0Lm91dCIsInciLHN0ZG91dCk7CiAgICBjaW4gPj4geCA+PiBuIDsKICAgIHh1bGkoKTsKICAgLy8vIGNvdXQgPDwgbXUoeCxuKTsKICAgIHJldHVybiAwOwp9Cg==