#include #include #include #include #include #include #include #include #include #include using namespace std; long long gcd(long long a, long long b){ if(b==0) return a; return gcd(b, a%b); } long long tot(long long n){ long long ret = n; for(long long i=2; i*i<=n; i++){ if(n%i == 0){ ret = ret/i * (i-1); while(n%i == 0){ n /= i; } } } if(n != 1){ ret = ret/n * (n-1); } return ret; } long long mypow(long long x, long long y, long long MOD){ if(x==0 && y!=0) return 0; long long ret=1LL; while(y>0LL){ if(y&1LL) ret = (ret * x) % MOD; x = (x*x) % MOD; y >>= 1LL; } return ret; } vector > prime_factorization(long long N){ vector< pair > ret; for(long long i=2; i*i<=N; i++){ long long tmp = 0; while(N%i==0){ tmp++; N/=i; } if(tmp>0){ ret.push_back( make_pair(i, tmp) ); } } if(N!=1){ ret.push_back( make_pair(N, 1) ); } return ret; } int main(){ long long A,N,M; cin >> A >> N >> M; if(N==0){ cout << 1 << endl; return 0; } long long tot_ = tot(M); map memo; long long ret = A; memo[ret] = 0; for(int i=1; i