#include <stdio.h>
#define mod 1000000007
long long power(long long base, long long exp) {
long long result = 1;
base = base % mod;
if (base == 0) return 0;
while (exp > 0) {
if (exp % 2 == 1) {
result = (result * base) % mod;
}
base = (base * base) % mod;
exp = exp / 2;
}
return result;
}
int main() {
FILE *fin = NULL;
FILE *fout = NULL;
if((fin = fopen("lgput.in", "r")) == NULL) {
fprintf(stderr, "Eroare la deschidere\n");
return 1;
}
if((fout = fopen("lgput.out", "w")) == NULL) {
fprintf(stderr, "Eroare la deschidere\n");
fclose(fin);
return 1;
}
long long a,b;
if (fscanf(fin, "%lld %lld", &a, &b) != 2) {
fprintf(stderr, "Eroare la citire\n");
fclose(fin);
fclose(fout);
return 1;
}
long long result = power(a, b);
fprintf(fout, "%lld\n", result);
fclose(fin);
fclose(fout);
return 0;
}