#include <cstdio>
#include <map>
#define MOD 10000007
long long int n, m;
std::map< long long int, std::map<long long int, long long int> > M;

long long f(long long a, long long b)
{
    if( b == 0 ) return 1;
    if( M[a][b] == 0 ) M[a][b] = ((f(a, b/2)%MOD)*(f(a, b/2)%MOD)*(b%2?a:1))%MOD;
    return M[a][b];
}

int main()
{
    freopen(".1.in","r",stdin);
    freopen(".1.out","w",stdout);
    scanf("%lld%lld",&n,&m);
    printf("%lld", f(n,m));
}
