/*
#include <stdio.h>
int n, a, b, d[1010];
int maxi(int a, int b)
{
int max=d[a],mi=a;
for(int i=a; i<=b; i++)
{
if(max<d[i])
{
max = d[i];
mi = i;
}
}
return mi;
}
int main()
{
scanf("%d", &n);
for(int i=1; i<=n; i++)
scanf("%d", &d[i]);
scanf("%d%d", &a, &b);
printf("%d\n", maxi(a, b));
}
*/
//#include <stdio.h>
//
//int n, d[110];
//int f()
//{
// int max=d[0], mi=0;
// for(int i=0;i<n;i++)
// {
// if(max<d[i])
// {
// max=d[i];
// mi=i;
// }
//
// }
// return mi+1;
//}
//
//
//int main()
//{
// scanf("%d", &n);
//
// for(int i=0; i<n; i++)
// scanf("%d", &d[i]);
//
// printf("%d", f());
// return 0;
//}
//#include <stdio.h>
//
//long long int n;
//long long int f(long long int n)
//{
// long long int r = 0;
// while(1)
// {
// if(n==0)
// {
// return r;
// }
// r=r*10+n%10;
// n/=10;
// }
//
//}
//int main()
//{
// scanf("%lld", &n);
// printf("%lld\n", f(n));
//}
//#include <stdio.h>
//
//long long int n;
//
//
//int sqrt(long long int n)
//{
// long long int i=1;
// while(1)
// {
// if(i*i>n)
// {
// return (int) i-1;
// }
// i++;
// }
//}
//int main()
//{
// scanf("%lld", &n);
// printf("%d\n", sqrt(n));
// return 0;
//}
//#include <stdio.h>
//double n;
//double abs(double n)
//{
// if(n>0) return n;
// return 0-n;
//}
//
//int main()
//{
// scanf("%lf", &n);
// printf("%.10g",abs(n));
//}
//#include <stdio.h>
//
//int n, d[100010], k;
//
//
//
//int f(int k)
//{
// for(int i=1;i<=n;i++)
// {
// if(d[i]==k)
// {
// return i;
// }
// }
// return -1;
//
//}
//int main()
//{
// scanf("%d", &n);
//
// for(int i=1; i<=n; i++)
// scanf("%d", &d[i]);
//
// scanf("%d", &k);
// printf("%d\n", f(k));
//}
//#include <stdio.h>
//
//int n;
//
//long long int d[110];
//
//
//int main()
//{
// scanf("%d", &n);
//
// for(int i=1; i<=n; i++)
// scanf("%lld", &d[i]);
//
// printf("%lld", f());
// return 0;
//}
//#include <stdio.h>
//
//int n, k, d[1010];
//int upper_bound(int k)
//{
// for(int i=1;i<=n;i++)
// {
// if(d[i]>k)
// {
// return i;
// }
// }
// return n+1;
//}
//int main()
//{
// scanf("%d", &n);
//
// for(int i=1; i<=n; i++)
// scanf("%d", &d[i]);
//
// scanf("%d", &k);
//
// printf("%d\n", upper_bound(k));
//}
//#include <stdio.h>
//
//int a, b;
//int gcd(int a, int b)
//{
// int gcd;
// for(int i=1;i<=a;i++)
// {
// if(a%i==0&&b%i==0)
// {
// gcd=i;
// }
// }
// return gcd;
//}
//int main()
//{
// scanf("%d%d", &a, &b);
// printf("%d\n", gcd(a, b));
//}
//#include <stdio.h>
//
//int gcd(int p, int q)
//{
// if(p==0) return q;
// return gcd(q%p, p);
//}
//long long int lcm(int a, int b)
//{
// return (long long int)(gcd(a,b))*(a/gcd(a, b))*(b/gcd(a, b));
//}
//int main()
//{
// int a, b;
// scanf("%d%d", &a, &b);
// printf("%lld\n", lcm(a, b));
//}
#include <stdio.h>
int a, n;
long long int pow(int a, int n)
{
long long int q=1, d=a;
if(a==1) return 1;
for(int i=1;i<=n;i++)
{
q*=d;
}
return q;
}
int main()
{
scanf("%d%d", &a, &n);
printf("%lld\n", pow(a, n));
}