This documentation is automatically generated by online-judge-tools/verification-helper
#define PROBLEM "https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=NTL_1_B&lang=jp"
#include <bits/stdc++.h>
using namespace std;
#include "../../math/pow.hpp"
int main() {
int m, n;
cin >> m >> n;
cout << modpow(m, n, (int)1e9+7) << endl;
return 0;
}
#line 1 "verify/aoj/aoj_ntl_1_b.test.cpp"
#define PROBLEM "https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=NTL_1_B&lang=jp"
#include <bits/stdc++.h>
using namespace std;
#line 1 "math/pow.hpp"
long long mypow(long long b, long long e) {
long long ret = 1;
while(e) {
if(e & 1) ret *= b;
b *= b;
e >>= 1;
}
return ret;
}
long long modpow(long long b, long long e, long long MOD=998244353) {
long long ret = 1;
b %= MOD;
while(e) {
if(e & 1) ret = ret * b % MOD;
b = b * b % MOD;
e >>= 1;
}
return ret;
}
#line 7 "verify/aoj/aoj_ntl_1_b.test.cpp"
int main() {
int m, n;
cin >> m >> n;
cout << modpow(m, n, (int)1e9+7) << endl;
return 0;
}