#include<iostream>
#include<cstdlib>
#include<cstdio>
using namespace std;
const int N=5e6+10;
typedef long long ll;
ll qpow(ll x,ll y,ll z){
ll s=1;
while(y) {
if(y&1) s=1ll*s*x%z;
x*=x;
x%=z;
y>>=1;
}
return s%z;
}
int mul(int a,int b,int p) {
int s=0;
for(;b;b>>=1) {
if(b&1) s=(s+a)%p;
a=(a+a)%p;
}
return s%p;
}
inline int read(){
int res=0,f=1;char ch=getchar();
while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}
while(isdigit(ch)){res=res*10+ch-'0';ch=getchar();}
return res*f;
}
ll qz[N];
ll a[N];
ll num[N];
ll n,p,k,ans,cnt=1;
int main(){
ios::sync_with_stdio(false);
n=read();
p=read();
k=read();
qz[0]=1;
for(int i=1;i<=n;i++){
num[i]=read();
qz[i]=((qz[i-1]%p)*(num[i]%p))%p;
}
a[n]=qpow(qz[n],p-2,p);
for(int i=n;i>=1;i--){
a[i-1]=mul(a[i],num[i],p);
}
for(int i=1;i<=n;i++){
cnt=(cnt*k)%p;
ans+=mul(cnt,mul(a[i],qz[i-1],p),p);
}
cout<<ans%p;
return 0;
}