#include <stdio.h>
unsigned long bigmod(unsigned long b, unsigned long p, unsigned long m);
unsigned long square(unsigned long a);
unsigned long square(unsigned long a);
int main()
{
unsigned long b, p, m, res;
{
unsigned long b, p, m, res;
#ifndef ONLINE_JUDGE
freopen("d:\\uva_in.txt", "r", stdin);
#endif
freopen("d:\\uva_in.txt", "r", stdin);
#endif
while (scanf("%lu%lu%lu", &b, &p, &m) == 3) {
res = bigmod(b, p, m);
printf("%lu\n", res);
}
res = bigmod(b, p, m);
printf("%lu\n", res);
}
return 0;
}
}
unsigned long bigmod(unsigned long b, unsigned long p, unsigned long m) {
if (p == 0)
return 1;
else if (p % 2 == 0)
return square(bigmod(b, p / 2, m)) % m;
else
return (b % m) * bigmod(b, p - 1, m) % m;
}
if (p == 0)
return 1;
else if (p % 2 == 0)
return square(bigmod(b, p / 2, m)) % m;
else
return (b % m) * bigmod(b, p - 1, m) % m;
}
unsigned long square(unsigned long a)
{
return a * a;
}
{
return a * a;
}