#include using namespace std; using ll = long long; using pl = pair; using vl = vector; #define rep(i,n) for(ll i=0;i<(ll)(n);++i) #define reps(i,s,n) for(ll i=(s);i<(ll)(n);++i) #define rep1(i,n) for(ll i=1;i<=(ll)(n);++i) #define fi first #define se second #define pb push_back #define eb emplace_back #define be(v) (v).begin(),(v).end() const long long INF = 1e18; #ifdef DEBUG #include #endif // start ipow : integer power /** inline ll ipow(ll x,ll p){ ll ret=x; rep1(i,p-1) ret*=x; return ret; } **/ ll N,M,MOD; // mpow : mod power //const int MOD = 1000000007; ll mpow(ll x, ll n) { ll ret = 1; while (n > 0) { if (n & 1LL) ret = ret * x % MOD; x = x * x % MOD; n >>= 1; } return ret; } // mpow : mod power void input(){ cin>>N>>M>>MOD; } #ifdef DEBUG void showall(){ show(N,M,MOD); } #endif ll logic(){ M %= MOD; ll ans = 1; rep(n,N){ ll a;cin>>a; ans = (ans * (1LL + mpow(M,a))) % MOD; #ifdef DEBUG show("n ans M a mpow",n,ans,M,a,mpow(M,a)); #endif } return ans; } int main(){ #ifdef DEBUG ll x= 91510263775; ll y= 86467186908397382; MOD = 118411323; show("mpowbig",mpow(x,y)); #endif input(); #ifdef DEBUG //n ans M a mpow 0 -57613481 91510263775 86467186908397382 -57613482 showall(); cout << "--- Logic ---" << endl; #endif ll ans=logic(); cout<