/*
#include <stdio.h>
int cnt=0;
void f(int n)
{
cnt++;
if(n==1)
{
return;
}
if(n%2==1)
{
f(n*3+1);
}
else
{
f(n/2);
}
}
int main()
{
int n,s;
scanf("%d", &n);
f(n);
printf("%d", cnt);
return 0;
}
*/
/*
#include <stdio.h>
long long int memo[101]={};
long long int f(int n)
{
if(memo[n]!=0) return memo[n];
if(n <= 2) return memo[n]=1;
return memo[n]=(f(n-2)+f(n-1))%1000000007;
}
int main()
{
int n;
scanf("%d", &n);
printf("%lld\n", f(n));
return 0;
}
*/
#include <stdio.h>
long long int f(int n, int k)
{
long long int cup;
if(k==0 || n==1) return 1;
cup = f(n,k/2);
if(k%2==0) return cup*cup;
else return cup*cup*n;
}
int main()
{
int n, k;
scanf("%d %d", &n, &k);
printf("%lld\n", f(n,k));
return 0;
}