1 #include <iostream>
   2 #include <sstream>
   3 #include <string>
   4 #include <algorithm>
   5 #include <vector>
   6 using namespace std;
   7 
   8 #define GI ({int _t; scanf("%d", &_t); _t;})
   9 #define FOR(i, a, b) for (int i=a; i<b; i++)
  10 #define REP(i, a) FOR(i, 0, a)
  11 template<class T> string toString(T n){ostringstream ost;ost<<n;ost.flush();return ost.str();}
  12 int toInt(string s){int r=0;istringstream sin(s);sin>>r;return r;}
  13 #define DBG(x) cout << #x << "::" << x << endl;
  14 #define DBGV(_v) { REP(_i, _v.size()) { cout << _v[_i] << "\t";} cout << endl;}
  15 
  16 int go(long long int b, long long int p, long long int m) {
  17 	//cout << b << "\t" << p << "\t" << m << endl;
  18 	if (p==0) { return (1%m); }
  19 	else if (p==1) { return (b%m); }
  20 	else if (p%2==0) { return (go((b%m*b%m)%m, p/2, m)); }
  21 	else { return (b*go(b, p-1, m))%m; }
  22 }
  23 
  24 int main() {
  25 	long long int b, p, m;
  26 	while (cin >> b >> p >> m) {
  27 		int res = go(b, p, m);
  28 		cout << res << endl;
  29 	}
  30 	return 0;
  31 }