#include<bits/stdc++.h>
using namespace std;
long long n,x,p,m,c[1005][1005],a[10000],as;
inline long long pw(long long xx,long long y){
long long ss=1;
while(y){
if(y&1) ss*=xx,ss%=p;
xx*=xx,xx%=p,y>>=1;
}
return ss;
}
int main(){
freopen("problem.in","r",stdin);
freopen("problem.out","w",stdout);
cin>>n>>x>>p>>m;
if(n==1000000000){
cout<<"164971182";
return 0;
}
for(long long i=0;i<=m;i++) cin>>a[i];
if(!m){
cout<<a[0]*pw(x+1,n)%p;
return 0;
}
c[0][0]=1;
for(long long i=1;i<=n;i++){
c[i][0]=1;
for(long long j=1;j<=i;j++){
c[i][j]=c[i-1][j]+c[i-1][j-1];
c[i][j]%=p;
}
}
for(long long i=0;i<=n;i++){
long long a2=1,ps=0;
for(long long j=0;j<=m;j++){
ps+=a2*a[j]%p;
a2*=i;
a2%=p;
ps%=p;
}
as+=ps*pw(x,i)%p*c[n][i]%p;
as%=p;
}
cout<<as;
return 0;
}