#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 & 1) 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(){ ll ans = 1; rep(n,N){ ll a;cin>>a; ans = (ans * (1 + mpow(M,a))) % MOD; } return ans; } int main(){ input(); #ifdef DEBUG showall(); cout << "--- Logic ---" << endl; #endif ll ans=logic(); cout<