#include<iostream>
using namespace std;

int dp[505][505][505];

int main(){
	
	int n,m,b;
	long int mod;
	cin>>n>>m>>b>>mod;
	
	int bug[n+1],i,j,k;
	
	for(i=0;i<n;i++)
		cin>>bug[i];
	
	int cnt=0;
	
	dp[0][0][0]=1;
	
	for(i=1;i<=n;i++)
		dp[i][0][0]=1;
	
	for(i=1;i<=n;i++){
		for(j=1;j<=m;j++){
			for(k=0;k<=b;k++){
				// either this ith programmer writes this line or doesnot
				dp[i][j][k]= dp[i-1][j][k]; // programmer doesnot write
				
				if((k>=bug[i-1]))
				dp[i][j][k]+= dp[i][j-1][k-bug[i-1]];  // programmer writes
				
				dp[i][j][k]%=mod;
			}
		}
	}
	
//	for(i=1;i<=n;i++){
		for(j=0;j<=b;j++){
			cnt+= dp[n][m][j];
			cnt%=mod;
//	}
	}
	
	cout<<cnt<<endl;
	
	return 0;
}