#include using namespace std; long long powers[26]; int H,W,M; long long K; long long inv[26]; int main(){ scanf("%d%d%lld%d",&H,&W,&K,&M); assert(H*W<=20); int d[4]={-1,1,-W,W}; powers[1]=1; for(int i=2;i<=25;i++){ powers[i]=1; long long mul=i; long long t=K; while(t){ if(t&1){ powers[i]*=mul; powers[i]%=M; } mul*=mul; mul%=M; t>>=1; } } inv[1]=1; for(int i=2;i<=26;i++){ inv[i]=M-inv[M%i]*(M/i)%M; } long long res=0; for(int i=0;i<(1< que; que.push(j); int count=1; while(!que.empty()){ int v=que.front(); que.pop(); for(int k=0;k<4;k++){ int nv=v+d[k]; if(k==0 || k==1){ if(v/W!=nv/W){ continue; } } if(nv>=H*W || nv<0){ continue; } if(!(i&(1<