#include <bits/stdc++.h>
using namespace std;
char N[(int)1e6 + 5], B[(int)1e6 + 5];
long long n, b, c;
inline long long euler(long long n) {
  long long ans = n;
  for (int i = 2; i * i <= 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 qpow(long long x, long long n, long long mod) {
  if (n == 0) return 1;
  long long ans = qpow(x, n >> 1, mod);
  ans = ans * ans % mod;
  if (n & 1) ans = ans * x % mod;
  return ans % mod;
}
int main() {
  cin >> B;
  cin >> N;
  int xx = strlen(N);
  int yy = strlen(B);
  cin >> c;
  n = 0;
  long long u = euler(c);
  if (xx < 10) {
    for (int i = 0; i < xx; i++) n = n * 10 + N[i] - '0';
    n--;
  } else {
    for (int i = 0; i < xx; i++) {
      n = n * 10 + N[i] - '0';
      n = n % u;
    }
    n = ((n - 1) + u) % u;
    n += u;
  }
  for (int i = 0; i < yy; i++) {
    b = b * 10 + B[i] - '0';
    b = b % c;
  }
  long long ans = (b - 1 + c) % c;
  ans = ans * qpow(b, n, c) % c;
  if (!ans)
    cout << c << endl;
  else
    cout << ans << endl;
  return 0;
}
