1 var
2 i,j,k,l,m,n,ans:longint;
3 a:array[0..100000] of longint;
4 procedure swap(var x,y:longint);inline;
5 var z:longint;
6 begin
7 z:=x;x:=y;y:=z;
8 end;
9 procedure sort(l,r:longint);inline;
10 var i,j,x,y:longint;
11 begin
12 i:=l;j:=r;x:=a[(l+r) div 2];
13 repeat
14 while a[i]<x do inc(i);
15 while a[j]>x do dec(j);
16 if i<=j then
17 begin
18 swap(a[i],a[j]);
19 inc(i);dec(j);
20 end;
21 until i>j;
22 if i<r then sort(i,r);
23 if l<j then sort(l,j);
24 end;
25 begin
26 readln(n,m,k,l);
27 for i:=1 to n do readln(a[i]);
28 sort(1,n);
29 for i:=1 to n do if (a[i]-(ans div m)*k)>=l then inc(ans);
30 writeln(ans);
31 readln;
32 end.