#include using namespace std; //#include //using namespace atcoder; using ll = long long int; using ull = unsigned long long int; using ld = long double; constexpr ll MAX = 2000000000000000000; constexpr ld PI = 3.14159265358979; constexpr ll MOD = 0;//2024948111; ld dotorad(ld K){return PI * K / 180.0;} ld radtodo(ld K){return K * 180.0 / PI;} mt19937 mt; void randinit(){srand((unsigned)time(NULL));mt = mt19937(rand());} int main(){ ll a,n; cin >> a >> n; ll M = 1,p = 0; while(M < 10000000){ p++; M *= a; } cout << M << endl; ll ans = 1; for(ll i = 0;i < min(100LL,n);i++){ ans = (ans * a) % M; } cout << ans << endl; }