#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N = 5e6+5;
template <typename T>
inline void read(T &x)
{
char c;
x = 0;
int fu = 1;
c = getchar();
while(c > 57 || c < 48)
{
if(c == 45)
{
fu = -1;
}
c = getchar();
}
while(c <= 57 && c >= 48)
{
x = (x << 3) + (x << 1) + c - 48;
c = getchar();
}
x *= fu;
}
template <typename T>
inline void fprint(T x)
{
if(x < 0)
{
putchar(45);
x = -x;
}
if(x > 9)
{
fprint(x / 10);
}
putchar(x % 10 + 48);
}
int n;
ll p, k;
ll a[N], pre[N], suf[N];
ll sum;
ll qpow(ll a, ll b, ll m){
ll res = 1;
while (b){
if (b & 1) res = res * a % m;
a = a * a % m;
b >>= 1;
}
return res % m;
}
int main(){
read(n);
read(p);
read(k);
pre[0] = suf[n + 1] = 1;
for (int i = 1;i <= n;++i){
cin >> a[i];
pre[i] = a[i] * pre[i - 1] % p;
}
for (int i = n;i >= 1;i--){
suf[i] = a[i] * suf[i + 1] % p;
}
ll k1 = k;
for (int i = 1;i <= n;++i){
sum = (sum + (k1 * pre[i - 1] % p) * suf[i + 1] % p) % p;
k1 = (k1 * k) % p;
}
fprint((sum * qpow(pre[n], p - 2, p)) % p);
return 0;
}