/* 快速冪 + 模運算定律,參考的是這位大神的寫法 */
// 不過她的最後一行 else 的 base 好像忘記補 % mod,可能導致 overflow
// 小弟補了一下,有錯請糾正
#include <iostream>
using namespace std;
long long BigMod(long long base, long long power, long long mod)
{
if (power == 0)
return 1;
else if (power == 1)
return base % mod;
else if (power%2 == 0)
{ // (160^4 % 120) = ((160^2 % 120) * (160^2 % 120)) % 120
long long val = BigMod(base, power/2, mod);
return (val * val) % mod;
}
else
{ // (160^9 % 120) = ((160^4 % 120) * (160^4 % 120) * (160^1 % 120)) % 120
long long val = BigMod(base, power/2, mod);
return (val * val * (base % mod)) % mod;
}
}
int main()
{
// B^P % M = (B % M)^P % M
// (B1 * B2) % M = ((B1 % M) * (B2 % M)) % M
long long B, P, M;
while (cin >> B >> P >> M)
cout << BigMod(B, P, M) << "\n";
return 0;
}