RT
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll MAXN=5e6+5;
ll n,p,k,ans;
ll a[MAXN];
ll pre[MAXN]={1},suf[MAXN],inv_n;
ll inv(ll num){
if(num==1)return 1;
return (p-p/num)*inv(p%num)%p;
}
int main(){
cin>>n>>p>>k;
for(int i=1;i<=n;i++)cin>>a[i];
for(int i=1;i<=n;i++)pre[i]=pre[i-1]*a[i]%p;
inv_n=inv(pre[n]);
suf[n+1]=1;
for(int i=n;i>=1;i--)suf[i]=suf[i+1]*a[i]%p;
for(ll i=1,now=k;i<=n;i++){
ans+=(now*inv_n%p*pre[i-1]%p*suf[i+1]%p);
ans%=p;
now=now*k%p;
}
cout<<ans;
return 0;
}
Nothing is compiled: OUTPUT exceeds.