#define _CRT_SECURE_NO_DEPRECATE
#include <bits/stdc++.h>
#include <stdio.h>
#include <string.h>
#include <utility>
#include <limits>
#define pb push_back
#define ppb pop_back
#define fixed(n) fixed << setprecision(n)
#define mp make_pair
#define loop(i, st, en) for(int i = st; i < en; i++)
#define pool(i, st) for(int i = st; i >= 0; i--)
#define ii pair<int, int>
#define vii vector<ii>
#define vi vector<int>
#define vv vector<vi>
#define all(v) ((v).begin()), ((v).end())
#define sz(v) ((int)((v).size()))
#define zero(v) memset(v, 0, sizeof(v))
#define rep(i, v) for(int i = 0; i < sz(v); ++i)
#define fr first
#define sec second
#define INF (1e9+7)
#define NetroMood ios_base::sync_with_stdio(false);cin.tie(NULL);
#define intINF numric_limits<int>::max();
#define TC int t; cin >> t; while(t--)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef long double lld;
const int MOD = 1000000007;
const double EPS = (1e-7);
//double pi = M_PI;
#ifndef ONLINE_JUDGE
#define debug(x) cerr << #x <<" "; _print(x); cerr << endl;
#else
#define debug(x)
#endif
void _print(ll t) {cerr << t;}
void _print(int t) {cerr << t;}
void _print(string t) {cerr << t;}
void _print(char t) {cerr << t;}
void _print(lld t) {cerr << t;}
void _print(double t) {cerr << t;}
void _print(ull t) {cerr << t;}
template <class T, class V> void _print(pair <T, V> p);
template <class T> void _print(vector <T> v);
template <class T> void _print(set <T> v);
template <class T, class V> void _print(map <T, V> v);
template <class T> void _print(multiset <T> v);
template <class T, class V> void _print(pair <T, V> p) {cerr << "{"; _print(p.fr); cerr << ","; _print(p.sec); cerr << "}";}
template <class T> void _print(vector <T> v) {cerr << "[ "; for (T i : v) {_print(i); cerr << " ";} cerr << "]";}
template <class T> void _print(set <T> v) {cerr << "[ "; for (T i : v) {_print(i); cerr << " ";} cerr << "]";}
template <class T> void _print(multiset <T> v) {cerr << "[ "; for (T i : v) {_print(i); cerr << " ";} cerr << "]";}
template <class T, class V> void _print(map <T, V> v) {cerr << "[ "; for (auto i : v) {_print(i); cerr << " ";} cerr << "]";}
int dx[8] = {0,0,1,-1,1,-1,1,-1};
int dy[8] = {1,-1,0,0,1,-1,-1,1};
int n, tt, x;
char ch;
int dcmp(double x, double y) { return fabs(x-y) <= EPS ? 0 : x < y ? -1 : 1; }
ll fastb(ll a, ll b, ll m) {
ll res = 1;
while(b) {
if(b%2)
res = (res*a) % m;
a = (a * a)%m;
b /= 2;
}
return res;
}
int main()
{
NetroMood
#ifndef ONLINE_JUDGE
freopen("debug.txt", "w", stderr);
// freopen("tests.txt", "r", stdin);
//freopen("output.txt", "w", stdout);
#endif
ll a, b, m;
cin >> a >> b >> m;
cout << fastb(a, b, m) << "n";
}