#include #include using namespace std; using i32 = int; using u32 = unsigned int; using i64 = long long; using u64 = unsigned long long; #define FAST_IO \ ios::sync_with_stdio(false); \ cin.tie(0); const i64 INF = 1001001001001001001; using Modint = atcoder::static_modint<1000000007>; int pow(i64 X, int e, int m) { i64 res = 1; while (e > 0) { if (e & 1) { res = (res * X) % m; } X = (X * X) % m; e >>= 1; } return res; } tuple> search() { for (int A = 100; A <= 1000; A ++) { for (int B = 100; B <= 1000; B ++) { int Y = pow(A, B, 1e9 + 7); bool ok = true; map mp; for (int X = 1; X <= 10000; X ++) { int K = gcd(X, Y); int Xd = pow(X, A, B); if (mp.count(K) == 0) { mp[K] = Xd; } else { if (mp[K] != Xd) { ok = false; break; } } } if (ok) { return {A, B, mp}; } } } } int main() { FAST_IO auto [A, B, mp] = search(); cout << A << " " << B << endl; int K; cin >> K; cout << mp[K] << endl; }