# include <iostream>
using namespace std;
int fastpow(int a,int b,int p) {
int ans=1;
a=a%p;
for(int i=0; i<=31; i++) {
if(b&(1<<i)) ans=ans*a%p;
a=a*a%p;
}
return ans;
}
int main() {
int a,b,p;
cin>>a>>b>>p;
cout<<fastpow(a, b,p);
return 0;
}
#include<iostream>
using namespace std;
int main() {
int n, x; cin >> n>>x;
int a=0, b=0,c=0, na, nb, nc, ans=0;
for(int i=1; i<=n; i++) {
int now;cin>>now;
na = max(a+now, 0);
nb = max(max(a+now*x, b+now*x), 0);
nc = max(max(c+now, b+now), 0);
a= na,b= nb,c=nc;
ans=max(max(ans,a), max(b,c));
}
cout <<ans;
}
# include<bits/stdc++.h>
using namespace std;
typedef long long int_t;
int_t dis[1<<18][18];
struct E {
int_t to,w;
E(int_t to, int_t w):to(to),w(w) {}
};
vector<E> G[20];
int_t dfs(int_t rt, int_t vised, int_t n) {
if(rt ==n-1) return 0;
if(dis[vised][rt]) return dis[vised][rt];
dis[vised][rt]=998244353;
for(E e : G[rt]) {
int_t to=e.to, w= e.w;
if((1<<to) & vised) continue;
dis[vised][rt]=max(dis[vised][rt],dfs(to,vised|(1<<to),n)+w);
}
return dis[vised][rt];
}
int main() {
int_t n,m; cin>> n>> m;
while(m--) {
int_t u,v,w;cin>>u>>v>> w;
G[u].push_back(E(v,w));
}
cout<<dfs(0,1,n);
}
# include <bits/stdc++.h>
using namespace std;
const int MAXN= 1e5 + 5;
int big[MAXN], small[MAXN], sum[MAXN];
int p1=1,p2=1;
int n,m,k,x;
int main() {
cin>> n>> m>> k;
for(int i=1; i<=n; i++) {
cin>>x;
if(x <= k) {
___(1)___;
} else {
big[p2++]=x;
}
}
sort(small+1, small+1+ p1,greater<int>());
sort(big+ 1, big+1 + p2, greater<int>());
for(int i=1; i<=p1; i++) {
___(2)___;
}
int ans= sum[p1], cur = 0;
for(int i=1; i<= p2; i++) {
cur+= ___(3)___;
int days =___(4)___+1;
if(days>n) {
break;
}
int left = min(n-days, p1);
ans=max(ans,___(5)___);
}
cout<< ans<< endl;
return 0;
}
#include<bits/stdc++.h>
using namespace std;
typedef long long int_t;
int read() {
int_t x=0,w=1; char ch=0;
while(!isdigit(ch)) {ch = getchar();if(ch =='-')w=-1;}
while(isdigit(ch)) x=___(1)___, ch=getchar();
return x;
}
struct E {
int_t to,w;
E(int_t to0, int_t w0) {to=to0; w=w0;}
};
int_t ans;
vector<E> G[501000];
int_t dfs(int_t rt, int_t fa) {
int_t ret=0,cnt=0;
for(E e: G[rt]) if(e.to != fa) {
int_t res = dfs(e.to, rt)+ e.w;
if (___(4)___) ans+=cnt*(res-ret),___(3)___,cnt++;
else ___(2)___, cnt++;
}
return ret;
}
int main() {
int_t n =read(), s = read();
for(int_t i=1; i<n; i++) {
int_t u = read(), v = read(), w = read();
G[u].emplace_back(v, w);
G[v].emplace_back(u, w);
}
___(5)___
cout << ans;
return 0 ;
}