#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-6;
const int inf = 0x3f3f3f3f;
const int maxn = 100000 + 10;
const int mod = 1000000007;
int gcd(int a, int b) { return b ? gcd(b, a % b) : a; }
string B, N;
long long c, b, n;
long long add(long long a, long long b, int P) { return (a + b) % P; }
long long mul(long long a, long long b, int P) { return a * b % P; }
long long calc(string s, int P) {
  long long res = 0;
  for (int i = 0; i < s.size(); ++i) res = add(mul(res, 10, P), s[i] - '0', P);
  return res;
}
int phi(int n) {
  int ans = n;
  for (int i = 2; i <= sqrt(n); ++i) {
    if (n % i == 0) {
      ans = ans / i * (i - 1);
      while (n % i == 0) n /= i;
    }
  }
  if (n > 1) ans = ans / n * (n - 1);
  return ans;
}
long long kpow(long long a, long long b, long long P) {
  long long res = 1;
  while (b) {
    if (b & 1) res = mul(res, a, P);
    a = mul(a, a, P);
    b >>= 1;
  }
  return res;
}
int main() {
  cin >> B >> N >> c;
  int pc = phi(c);
  b = calc(B, c);
  n = calc(N, pc);
  n = add(n, pc - 1, pc);
  long long ans;
  if (N.size() < 11) {
    long long x = 0;
    for (int i = 0; i < N.size(); ++i) x = x * 10 + N[i] - '0';
    ans = kpow(b, x - 1, c);
  } else
    ans = kpow(b, n + pc, c);
  b = add(b, c - 1, c);
  ans = mul(ans, b, c);
  cout << (ans ? ans : c) << endl;
  return 0;
}
