#include <bits/stdc++.h>
using namespace std;
long long dp[600][600];
int A[600];
long long mod;
long long n, m, b;
long long solve() {
  int i, j, k;
  memset(dp, 0, sizeof(dp));
  dp[0][0] = 1;
  for (i = 1; i <= n; i++) {
    for (j = 1; j <= m; j++) {
      for (k = 0; k <= b; k++) {
        if (A[i] <= k) {
          dp[j][k] = (dp[j][k] + dp[j - 1][k - A[i]]) % mod;
        }
      }
    }
  }
  long long ans = 0;
  for (i = 0; i <= b; i++) {
    ans += dp[m][i];
  }
  ans %= mod;
  return ans;
}
int main() {
  int i;
  scanf("%I64d%I64d%I64d%I64d", &n, &m, &b, &mod);
  for (i = 1; i <= n; i++) {
    scanf("%d", &A[i]);
  }
  cout << solve() << endl;
  return 0;
}
