#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <vector>
#include <map>

#define PROB "B"
#define VI vector<int>
#define pb push_back

using namespace std;
int a[11];
typedef long long ll;

void shifta() {
  int i;
  for(i=0;i<10;i++) {
    a[i] = a[i+1];
  }
}

int main() {
  freopen(PROB".in", "r", stdin);
  freopen(PROB".out", "w", stdout);
  int i,p,N,M,K,L,conv=1;
  VI is;
  memset(a,0,sizeof(a));

  cin >> N >> M >> K >> L;
  for(i=0;i<L;i++) {
    cin >> p;
    is.pb(p); 
  }
  sort(is.begin(),is.end());
  ll cur = 0,lastcur;
  ll ans = 0;
  while(N>0) {
    lastcur = cur;
    for(cur=cur+1;;cur++) {
      shifta();
      bool ok=true;
      for(i=0;i<L;i++) {
        if(a[is[i]]) {
          ok=false;
          break;
        }
      }
      if(ok) {
        if(conv>M) {
          conv = 1;
          cur = lastcur + K;
          break;

        }
        for(i=0;i<L;i++) {
          a[is[i]] = 1;
        }
        conv++;
        break;
      }
    }
    ans = cur+K-1;
    N--;
  }
  cout << ans << endl;
  return 0;
}
