/*
#include <stdio.h>
int main() {
int p[100001]={}; // p[i] =0 : i°¡ ¼Ò¼ö´Ù
int n;
int i,j;
int max=0;
scanf("%d",&n);
for(i=2 ; i*i<=n ; i++) {
if(p[i]==0) {
for(j=i*i ; j<=n ; j+=i) {
p[j]=1;
}
}
}
for(i=2 ; n!=1 ; i++) {
if(p[i]==0) {
while(1) {
if(n%i==0) {
if(i>max) {
max=i;
}
n=n/i;
}
else {
break;
}
}
}
}
printf("%d",max);
return 0;
}
*/
/*
#include <stdio.h>
int main() {
long long int n;
long long int arr[100001] = {};
long long int max = 0;
long long int sum = 0;
scanf("%lld", &n);
for(long long int i=2; i*i<=n; i++) {
while(n%i == 0) {
n/=i;
sum++;
if(sum>max) {
max=i;
}
}
sum=0;
}
if (n>1) {
max=n;
}
printf("%lld", max);
return 0;
}
*/
#include <stdio.h>
int main(){
long long int a = 1;
int n,k;
scanf("%d %d",&n,&k);
for(int i=0 ; i<k ; i++){
a=(a*n)%1000000007;
}
printf("%lld", a);
return 0;
}