#include<bits/stdc++.h>
using namespace std;

const int maxn=105;
int n,m,k,mod;
int fac[maxn],ifac[maxn],pw[maxn][maxn];
int f[maxn][maxn][maxn],g[maxn][maxn][maxn];
void Add(int &a,int b){
	a+=b;
	if(a>=mod)a-=mod;
}

int main(){
	scanf("%d%d%d%d",&n,&m,&k,&mod);
	fac[0]=ifac[0]=fac[1]=ifac[1]=1;
	for(int i=2;i<=max(n,m);i++){
		fac[i]=1LL*fac[i-1]*i%mod;
		ifac[i]=1LL*ifac[mod%i]*(mod-mod/i)%mod;
	}
	for(int i=1;i<=max(n,m);i++)ifac[i]=1LL*ifac[i-1]*ifac[i]%mod;
	pw[0][0]=1;
	for(int p=1;p<=k;p++){
		pw[p][0]=1;
		for(int i=1;i<=max(n,m);i++)pw[p][i]=1LL*pw[p][i-1]*p%mod;
	}
	f[0][0][0]=1;
	for(int p=0;p<=k;p++)for(int i=0;i<=n;i++)for(int j=0;j<=m;j++){
		if(g[p][i][j]){
			Add(f[p][i][j],g[p][i][j]);
			int coef=g[p][i][j],mul=pw[k-p+1][i]-pw[k-p][i];
			if(mul<0)mul+=mod;
			mul=1LL*mul*pw[p][n-i]%mod;
			for(int jj=j+1;jj<=m;jj++){
				coef=1LL*coef*mul%mod;
				Add(f[p][i][jj],1LL*ifac[jj-j]*coef%mod);
			}
		}
		if(p<k&&f[p][i][j]){
			Add(g[p+1][i][j],f[p][i][j]);
			int coef=f[p][i][j],mul=pw[p+1][m-j]-pw[p][m-j];
			if(mul<0)mul+=mod;
			mul=1LL*mul*pw[k-p][j]%mod;
			for(int ii=i+1;ii<=n;ii++){
				coef=1LL*coef*mul%mod;
				Add(g[p+1][ii][j],1LL*ifac[ii-i]*coef%mod);
			}
		}
	}
	printf("%d\n",1LL*f[k][n][m]*fac[n]%mod*fac[m]%mod);
	return 0;
}