#pragma GCC optimize("O3,unroll-loops")
#include <bits/stdc++.h>
//#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
using namespace std;
#define FOR(i, a, b) for(LL i = (a); i < (b); i++)
#define REP(i, a, b) for(LL i = (a); i <= (b); i++)
#define FORD(i, a, b) for(LL i = (a); i > (b); i--)
#define REPD(i, a, b) for(LL i = (a); i >= (b); i--)
#define SZ(a) (int((a).size()))
#define ALL(a) (a).begin(), (a).end()
#define ALLD(a) (a).rbegin(), (a).rend()
#define PB push_back
#define MP make_pair
#define LL long long
#define ULL unsigned long long
#define LD long double
#define PLL pair<LL, LL>
#define FI first
#define SE second
#define VTLL vector<long long>
#define VTLD vector<long double>
#define TOLOWER(s) transform((s).begin(), (s).end(), (s).begin(), ::tolower)
#define TOUPPER(s) transform((s).begin(), (s).end(), (s).begin(), ::toupper)
#define MIN(v) *min_element((v).begin(), (v).end())
#define MAX(v) *max_element((v).begin(), (v).end())
#define LB(c, x) distance((c).begin(), lower_bound(ALL(c), (x)))
#define UB(c, x) distance((c).begin(), upper_bound(ALL(c), (x)))
#define UNIQUE(x) sort(ALL(x)), x.erase(unique(ALL(x)), x.end()), x.shrink_to_fit()
template <typename T>
T SUM(const vector<T> a) {
T sum = 0;
for (T v : a) sum += v;
return sum;
}
#define MS(a, x) memset(a, x, sizeof(a))
#define FID(x) fixed << setprecision(x)
#define MASK(i) (1LL << (i))
#define BIT(x, i) (((x) >> (i)) & 1)
#define ___Dang_Nhat_Tinh___ signed main()
#define TIME (1.0 * clock() / CLOCKS_PER_SEC)
#define FILE(name) if (fopen(name".inp", "r")) {freopen(name".inp", "r", stdin); freopen(name".out", "w", stdout);}
template <typename T>
void debug_val(const T &val) { cerr << val; }
template <typename T1, typename T2>
void debug_val(const pair<T1, T2> &p) {
cerr << "(";
debug_val(p.first);
cerr << ", ";
debug_val(p.second);
cerr << ")";
}
template <typename T>
void debug_val(const vector<T> &v) {
cerr << "[";
for (size_t i = 0; i < v.size(); ++i) {
if (i) cerr << ", ";
debug_val(v[i]);
}
cerr << "]";
}
template <typename T>
void debug_val(const set<T> &s) {
cerr << "{";
bool first = true;
for (const auto &x : s) {
if (!first) cerr << ", ";
debug_val(x);
first = false;
}
cerr << "}";
}
template <typename K, typename V>
void debug_val(const map<K, V> &m) {
cerr << "{";
bool first = true;
for (const auto &kv : m) {
if (!first) cerr << ", ";
debug_val(kv);
first = false;
}
cerr << "}";
}
template<typename T>
void dbg(T x) { debug_val(x); cerr << '\n'; }
template<typename T, typename... Args>
void dbg(T x, Args... args) {
debug_val(x); cerr << ", ";
dbg(args...);
}
#define DEBUG(...) cerr << "[" << #__VA_ARGS__ << "] = ", dbg(__VA_ARGS__)
LL lcm(LL a, LL b) { return a / __gcd(a, b) * b; }
LL max(LL a, LL b) { return a > b ? a : b; }
LL min(LL a, LL b) { return a < b ? a : b; }
const LL MAX = 1e6 + 7;
const LL MOD = 1e9 + 7;
const LL LIM = 1e4 + 5;
bool Prime[MAX];
void sieve(LL n = MAX) {
MS(Prime, true);
Prime[0] = Prime[1] = false;
for (LL i = 2; i*i <= n; i++) {
if (Prime[i]) {
for (LL j = i*i; j <= n; j += i) {
Prime[j] = false;
}
}
}
}
LL mul(LL a, LL n, LL mod){
LL res = a, ans = 0;
while(n){
if(n & 1) ans = (ans + res) % mod;
res = (res+res) % mod;
n /= 2;
}
return ans;
}
LL po(LL a, LL n, LL mod) {
LL res=a, ans=1;
while(n){
if(n & 1) ans = mul(ans, res, mod)% mod;
res=mul(res,res, mod)% mod;
n/=2;
}
return ans;
}
LL phi(LL n) {
int res = n;
for (int i = 2; i * i <= n; ++i) {
if (n % i == 0) {
while (n % i == 0) {
n /= i;
}
res -= res / i;
}
}
if (n != 1) {
res -= res / n;
}
return res;
}
LL tran(string s, LL mod) {
LL sum = 0;
FOR(i, 0, SZ(s)) {
sum = (sum * 10 + (s[i] - 48)) % mod;
}
return sum;
}
___Dang_Nhat_Tinh___ {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
string a, b, c; cin >> a >> b >> c;
LL aa = tran(a, MOD), bb = tran(b, MOD - 1), cc = tran(c, phi(MOD - 1));
cout << po(aa, po(bb, cc, MOD - 1), MOD);
cerr << "Time elapsed: " << TIME << " .s\n";
return (0 ^ 0);
}
I3ByYWdtYSBHQ0Mgb3B0aW1pemUoIk8zLHVucm9sbC1sb29wcyIpCiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgovLyNwcmFnbWEgR0NDIHRhcmdldCgiYXZ4MixibWksYm1pMixsemNudCxwb3BjbnQiKQp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBGT1IoaSwgYSwgYikgZm9yKExMIGkgPSAoYSk7IGkgPCAoYik7IGkrKykKI2RlZmluZSBSRVAoaSwgYSwgYikgZm9yKExMIGkgPSAoYSk7IGkgPD0gKGIpOyBpKyspCiNkZWZpbmUgRk9SRChpLCBhLCBiKSBmb3IoTEwgaSA9IChhKTsgaSA+IChiKTsgaS0tKQojZGVmaW5lIFJFUEQoaSwgYSwgYikgZm9yKExMIGkgPSAoYSk7IGkgPj0gKGIpOyBpLS0pCiNkZWZpbmUgU1ooYSkgKGludCgoYSkuc2l6ZSgpKSkKI2RlZmluZSBBTEwoYSkgKGEpLmJlZ2luKCksIChhKS5lbmQoKQojZGVmaW5lIEFMTEQoYSkgKGEpLnJiZWdpbigpLCAoYSkucmVuZCgpCiNkZWZpbmUgUEIgcHVzaF9iYWNrCiNkZWZpbmUgTVAgbWFrZV9wYWlyCiNkZWZpbmUgTEwgbG9uZyBsb25nCiNkZWZpbmUgVUxMIHVuc2lnbmVkIGxvbmcgbG9uZwojZGVmaW5lIExEIGxvbmcgZG91YmxlCiNkZWZpbmUgUExMIHBhaXI8TEwsIExMPgojZGVmaW5lIEZJIGZpcnN0CiNkZWZpbmUgU0Ugc2Vjb25kCiNkZWZpbmUgVlRMTCB2ZWN0b3I8bG9uZyBsb25nPgojZGVmaW5lIFZUTEQgdmVjdG9yPGxvbmcgZG91YmxlPgojZGVmaW5lIFRPTE9XRVIocykgdHJhbnNmb3JtKChzKS5iZWdpbigpLCAocykuZW5kKCksIChzKS5iZWdpbigpLCA6OnRvbG93ZXIpCiNkZWZpbmUgVE9VUFBFUihzKSB0cmFuc2Zvcm0oKHMpLmJlZ2luKCksIChzKS5lbmQoKSwgKHMpLmJlZ2luKCksIDo6dG91cHBlcikKI2RlZmluZSBNSU4odikgKm1pbl9lbGVtZW50KCh2KS5iZWdpbigpLCAodikuZW5kKCkpCiNkZWZpbmUgTUFYKHYpICptYXhfZWxlbWVudCgodikuYmVnaW4oKSwgKHYpLmVuZCgpKQojZGVmaW5lIExCKGMsIHgpIGRpc3RhbmNlKChjKS5iZWdpbigpLCBsb3dlcl9ib3VuZChBTEwoYyksICh4KSkpCiNkZWZpbmUgVUIoYywgeCkgZGlzdGFuY2UoKGMpLmJlZ2luKCksIHVwcGVyX2JvdW5kKEFMTChjKSwgKHgpKSkKI2RlZmluZSBVTklRVUUoeCkgc29ydChBTEwoeCkpLCB4LmVyYXNlKHVuaXF1ZShBTEwoeCkpLCB4LmVuZCgpKSwgeC5zaHJpbmtfdG9fZml0KCkKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+ClQgU1VNKGNvbnN0IHZlY3RvcjxUPiBhKSB7CiAgICBUIHN1bSA9IDA7CiAgICBmb3IgKFQgdiA6IGEpIHN1bSArPSB2OwogICAgcmV0dXJuIHN1bTsKfQojZGVmaW5lIE1TKGEsIHgpIG1lbXNldChhLCB4LCBzaXplb2YoYSkpCiNkZWZpbmUgRklEKHgpIGZpeGVkIDw8IHNldHByZWNpc2lvbih4KQojZGVmaW5lIE1BU0soaSkgKDFMTCA8PCAoaSkpCiNkZWZpbmUgQklUKHgsIGkpICgoKHgpID4+IChpKSkgJiAxKQojZGVmaW5lIF9fX0RhbmdfTmhhdF9UaW5oX19fIHNpZ25lZCBtYWluKCkKI2RlZmluZSBUSU1FICAoMS4wICogY2xvY2soKSAvIENMT0NLU19QRVJfU0VDKQojZGVmaW5lIEZJTEUobmFtZSkgaWYgKGZvcGVuKG5hbWUiLmlucCIsICJyIikpIHtmcmVvcGVuKG5hbWUiLmlucCIsICJyIiwgc3RkaW4pOyBmcmVvcGVuKG5hbWUiLm91dCIsICJ3Iiwgc3Rkb3V0KTt9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4Kdm9pZCBkZWJ1Z192YWwoY29uc3QgVCAmdmFsKSB7IGNlcnIgPDwgdmFsOyB9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgp2b2lkIGRlYnVnX3ZhbChjb25zdCBwYWlyPFQxLCBUMj4gJnApIHsKICAgIGNlcnIgPDwgIigiOwogICAgZGVidWdfdmFsKHAuZmlyc3QpOwogICAgY2VyciA8PCAiLCAiOwogICAgZGVidWdfdmFsKHAuc2Vjb25kKTsKICAgIGNlcnIgPDwgIikiOwp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4Kdm9pZCBkZWJ1Z192YWwoY29uc3QgdmVjdG9yPFQ+ICZ2KSB7CiAgICBjZXJyIDw8ICJbIjsKICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdi5zaXplKCk7ICsraSkgewogICAgICAgIGlmIChpKSBjZXJyIDw8ICIsICI7CiAgICAgICAgZGVidWdfdmFsKHZbaV0pOwogICAgfQogICAgY2VyciA8PCAiXSI7Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgp2b2lkIGRlYnVnX3ZhbChjb25zdCBzZXQ8VD4gJnMpIHsKICAgIGNlcnIgPDwgInsiOwogICAgYm9vbCBmaXJzdCA9IHRydWU7CiAgICBmb3IgKGNvbnN0IGF1dG8gJnggOiBzKSB7CiAgICAgICAgaWYgKCFmaXJzdCkgY2VyciA8PCAiLCAiOwogICAgICAgIGRlYnVnX3ZhbCh4KTsKICAgICAgICBmaXJzdCA9IGZhbHNlOwogICAgfQogICAgY2VyciA8PCAifSI7Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBLLCB0eXBlbmFtZSBWPgp2b2lkIGRlYnVnX3ZhbChjb25zdCBtYXA8SywgVj4gJm0pIHsKICAgIGNlcnIgPDwgInsiOwogICAgYm9vbCBmaXJzdCA9IHRydWU7CiAgICBmb3IgKGNvbnN0IGF1dG8gJmt2IDogbSkgewogICAgICAgIGlmICghZmlyc3QpIGNlcnIgPDwgIiwgIjsKICAgICAgICBkZWJ1Z192YWwoa3YpOwogICAgICAgIGZpcnN0ID0gZmFsc2U7CiAgICB9CiAgICBjZXJyIDw8ICJ9IjsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVD4Kdm9pZCBkYmcoVCB4KSB7IGRlYnVnX3ZhbCh4KTsgY2VyciA8PCAnXG4nOyB9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmdzPgp2b2lkIGRiZyhUIHgsIEFyZ3MuLi4gYXJncykgewogICAgZGVidWdfdmFsKHgpOyBjZXJyIDw8ICIsICI7CiAgICBkYmcoYXJncy4uLik7Cn0KI2RlZmluZSBERUJVRyguLi4pIGNlcnIgPDwgIlsiIDw8ICNfX1ZBX0FSR1NfXyA8PCAiXSA9ICIsIGRiZyhfX1ZBX0FSR1NfXykKCkxMIGxjbShMTCBhLCBMTCBiKSB7IHJldHVybiBhIC8gX19nY2QoYSwgYikgKiBiOyB9CkxMIG1heChMTCBhLCBMTCBiKSB7IHJldHVybiBhID4gYiA/IGEgOiBiOyB9CkxMIG1pbihMTCBhLCBMTCBiKSB7IHJldHVybiBhIDwgYiA/IGEgOiBiOyB9CmNvbnN0IExMIE1BWCA9IDFlNiArIDc7CmNvbnN0IExMIE1PRCA9IDFlOSArIDc7CmNvbnN0IExMIExJTSA9IDFlNCArIDU7CmJvb2wgUHJpbWVbTUFYXTsKdm9pZCBzaWV2ZShMTCBuID0gTUFYKSB7CiAgICBNUyhQcmltZSwgdHJ1ZSk7CiAgICBQcmltZVswXSA9IFByaW1lWzFdID0gZmFsc2U7CiAgICBmb3IgKExMIGkgPSAyOyBpKmkgPD0gbjsgaSsrKSB7CiAgICAgICAgaWYgKFByaW1lW2ldKSB7CiAgICAgICAgICAgIGZvciAoTEwgaiA9IGkqaTsgaiA8PSBuOyBqICs9IGkpIHsKICAgICAgICAgICAgICAgIFByaW1lW2pdID0gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KCkxMIG11bChMTCBhLCBMTCBuLCBMTCBtb2QpewogICAgTEwgcmVzID0gYSwgYW5zID0gMDsKICAgIHdoaWxlKG4pewogICAgICAgIGlmKG4gJiAxKSBhbnMgPSAoYW5zICsgcmVzKSAlIG1vZDsKICAgICAgICByZXMgPSAocmVzK3JlcykgJSBtb2Q7CiAgICAgICAgbiAvPSAyOwogICAgfQogICAgcmV0dXJuIGFuczsKfQpMTCBwbyhMTCBhLCBMTCBuLCBMTCBtb2QpIHsKICAgIExMIHJlcz1hLCBhbnM9MTsKICAgIHdoaWxlKG4pewogICAgICAgIGlmKG4gJiAxKSBhbnMgPSBtdWwoYW5zLCByZXMsIG1vZCklIG1vZDsKICAgICAgICByZXM9bXVsKHJlcyxyZXMsIG1vZCklIG1vZDsKICAgICAgICBuLz0yOwogICAgfQogICAgcmV0dXJuIGFuczsKfQoKTEwgcGhpKExMIG4pIHsKICAgIGludCByZXMgPSBuOwogICAgZm9yIChpbnQgaSA9IDI7IGkgKiBpIDw9IG47ICsraSkgewogICAgICAgIGlmIChuICUgaSA9PSAwKSB7CiAgICAgICAgICAgIHdoaWxlIChuICUgaSA9PSAwKSB7CiAgICAgICAgICAgICAgICBuIC89IGk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmVzIC09IHJlcyAvIGk7CiAgICAgICAgfQogICAgfQogICAgaWYgKG4gIT0gMSkgewogICAgICAgIHJlcyAtPSByZXMgLyBuOwogICAgfQogICAgcmV0dXJuIHJlczsKfQoKCkxMIHRyYW4oc3RyaW5nIHMsIExMIG1vZCkgewogICAgTEwgc3VtID0gMDsKICAgIEZPUihpLCAwLCBTWihzKSkgewogICAgICAgIHN1bSA9IChzdW0gKiAxMCArIChzW2ldIC0gNDgpKSAlIG1vZDsKICAgIH0KICAgIHJldHVybiBzdW07Cn0KCl9fX0RhbmdfTmhhdF9UaW5oX19fIHsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShudWxscHRyKTsKICAgIGNvdXQudGllKG51bGxwdHIpOyAKCiAgICBzdHJpbmcgYSwgYiwgYzsgY2luID4+IGEgPj4gYiA+PiBjOwogICAgTEwgYWEgPSB0cmFuKGEsIE1PRCksIGJiID0gdHJhbihiLCBNT0QgLSAxKSwgY2MgPSB0cmFuKGMsIHBoaShNT0QgLSAxKSk7CiAgICBjb3V0IDw8IHBvKGFhLCBwbyhiYiwgY2MsIE1PRCAtIDEpLCBNT0QpOwoKICAgIGNlcnIgPDwgIlRpbWUgZWxhcHNlZDogIiA8PCBUSU1FIDw8ICIgLnNcbiI7CiAgICByZXR1cm4gKDAgXiAwKTsKfQ==