#include <iostream>
#define min(a,b) ((a>b)?b:a)
#define max(a,b) ((a>b)?a:b)
using namespace std;
int n,m,k,l;
int a[11];
bool t[1000];
bool com[11];
bool check(int j)
{
 for (int i=0;i<k;i++) if (com[i]==true&&t[j+i]==true) return false;
 return true;
}

void update(int i)
{
 for (int j=0;j<k;j++)
  if (com[j]==true)
   t[i+j]=true;
}

int main()
{
freopen("B.in","r",stdin);
freopen("B.out","w",stdout);
cin >> n >> m >> k >> l;
for (int i=0;i<l;i++)
 cin >> a[i];
for (int i=0;i<11;i++) com[i]=false;
for (int i=0;i<l;i++) com[a[i]-1]=true;
int konec[1000];
int endofprev=0;




for (int i=0;i<1000;i++) t[i]=false;

int counter =0;
int i=0;
for(i=0;counter<n;i++)
{

 if (check(i)) {update(i);counter++;}

}
cout<< i + k-1;



//for (int i=0;i<k;i++) cout << com[i]  << " " ;
//cout << endl;
//for (int i=0;i<1000;i++) cout << t[i] << " " ;


return 0;
}

