// #define _GLIBCXX_DEBUG #include using namespace std; #define rep(i, n) for (int i = 0; i < (int)(n); ++i) long long f(long long x, long long n, long long m) { if (n == 0) return 1; else if (n & 1) return x * f(x * x % m, n / 2, m) % m; else return f(x * x % m, n / 2, m); } int main() { // Input long long a, n; cin >> a >> n; // Output const long long M = 1'000'000'007; cout << M << endl; cout << f(a, n, M) << endl; }