program monuments;
Uses Math;
const
MAXN = 2000000;
type elenco = array[0..MAXN-1] of longint;
var
N, K, L, i : longint;
A : elenco;
function demolish(N, K, L: longint; var A: elenco): longint;
var inizio, fine, h, ans: Longint;
M : array [0..2*MAXN-1] of longint;
begin
if N=0 then demolish:=0
else
begin
for h := 0 to N -1 do
begin
M[h] := A[h];
M[h+N] := A[h] + K;
end;
ans := N;
fine := 0;
for inizio:=0 to N-1 do
begin
while M[fine]-M[inizio] <= L do fine:=fine+1;
ans := min(ans, fine-inizio-1);
end;
demolish := ans;
end;
end;
Procedure scambia (var c,b: longint);
var x:longint;
begin
x:=c;
c:=b;
b:=x;
end;
Procedure ordinamento (estremoi,estremos: dword; var v : elenco; ordinato:boolean);
var inf, sup, medio:dword;
pivot :longint;
begin
inf:=estremoi;
sup:=estremos;
medio:= (estremoi+estremos) div 2;
pivot:=v[medio];
repeat
if (ordinato) then
begin
while (v[inf]<pivot) do inf:=inf+1;
while (v[sup]>pivot) do sup:=sup-1;
end;
if inf<=sup then
begin
scambia(v[inf],v[sup]);
inf:=inf+1;
sup:=sup-1;
end;
until inf>sup;
if (estremoi<sup) then ordinamento(estremoi,sup,v,ordinato);
if (inf<estremos) then ordinamento(inf,estremos,v,ordinato);
end;
begin
{
uncomment the following lines if you want to read/write from files
assign(input, 'input.txt'); reset(input);
assign(output, 'output.txt'); rewrite(output);
}
readln( N, K, L);
for i:=0 to N-1 do
read(A[i]);
readln;
for i := 0 to N-1 do
if (A[i] >= K) then A[i] := A[i]-K;
writeln(demolish(N, K, L, A));
end.
cHJvZ3JhbSBtb251bWVudHM7ClVzZXMgTWF0aDsKY29uc3QKICAgIE1BWE4gPSAyMDAwMDAwOwp0eXBlIGVsZW5jbyA9ICBhcnJheVswLi5NQVhOLTFdIG9mIGxvbmdpbnQ7ICAgCnZhcgogICAgTiwgSywgTCwgaSAgOiBsb25naW50OwogICAgQSAgICAgICAgICAgOiBlbGVuY287CiAgICAKZnVuY3Rpb24gZGVtb2xpc2goTiwgSywgTDogbG9uZ2ludDsgdmFyIEE6IGVsZW5jbyk6IGxvbmdpbnQ7CnZhciBpbml6aW8sIGZpbmUsIGgsIGFuczogTG9uZ2ludDsKICAgIE0gOiBhcnJheSBbMC4uMipNQVhOLTFdIG9mIGxvbmdpbnQ7CmJlZ2luCiAgICBpZiBOPTAgdGhlbiBkZW1vbGlzaDo9MAogICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGJlZ2luIAogICAgICAgICAgICAgICBmb3IgaCA6PSAwIHRvIE4gLTEgZG8KICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luCiAgICAgICAgICAgICAgICAgICAgICAgICAgTVtoXSA6PSBBW2hdOwogICAgICAgICAgICAgICAgICAgICAgICAgIE1baCtOXSA6PSBBW2hdICsgSzsKICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDsKICAgICAgICAgICAgICAgIGFucyA6PSBOOwogICAgICAgICAgICAgICAgZmluZSA6PSAwOwogICAgICAgICAgICAgICAgZm9yIGluaXppbzo9MCB0byBOLTEgZG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgTVtmaW5lXS1NW2luaXppb10gPD0gTCBkbyBmaW5lOj1maW5lKzE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbnMgOj0gbWluKGFucywgZmluZS1pbml6aW8tMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOwogICAgICAgICAgICAgICAgZGVtb2xpc2ggOj0gYW5zOwogICAgICAgICAgICAgZW5kOyAgIAplbmQ7CgpQcm9jZWR1cmUgc2NhbWJpYSAodmFyIGMsYjogbG9uZ2ludCk7CnZhciB4OmxvbmdpbnQ7CmJlZ2luCiAgIHg6PWM7CiAgIGM6PWI7CiAgIGI6PXg7CmVuZDsgIApQcm9jZWR1cmUgb3JkaW5hbWVudG8gKGVzdHJlbW9pLGVzdHJlbW9zOiBkd29yZDsgdmFyIHYgOiBlbGVuY287IG9yZGluYXRvOmJvb2xlYW4pOwp2YXIgaW5mLCBzdXAsIG1lZGlvOmR3b3JkOwogICAgcGl2b3QgOmxvbmdpbnQ7CmJlZ2luCiAgICBpbmY6PWVzdHJlbW9pOwogICAgc3VwOj1lc3RyZW1vczsKICAgIG1lZGlvOj0gKGVzdHJlbW9pK2VzdHJlbW9zKSBkaXYgMjsKICAgIHBpdm90Oj12W21lZGlvXTsKICAgIHJlcGVhdAogICAgICBpZiAob3JkaW5hdG8pIHRoZW4KICAgICAgICAgYmVnaW4KICAgICAgICAgICAgd2hpbGUgKHZbaW5mXTxwaXZvdCkgZG8gIGluZjo9aW5mKzE7CiAgICAgICAgICAgIHdoaWxlICh2W3N1cF0+cGl2b3QpIGRvICBzdXA6PXN1cC0xOwogICAgICAgICBlbmQ7CiAgICAgIGlmIGluZjw9c3VwIHRoZW4KICAgICAgIGJlZ2luCiAgICAgICAgIHNjYW1iaWEodltpbmZdLHZbc3VwXSk7CiAgICAgICAgIGluZjo9aW5mKzE7CiAgICAgICAgIHN1cDo9c3VwLTE7CiAgICAgICBlbmQ7CiAgICB1bnRpbCBpbmY+c3VwOwogICAgaWYgKGVzdHJlbW9pPHN1cCkgdGhlbiBvcmRpbmFtZW50byhlc3RyZW1vaSxzdXAsdixvcmRpbmF0byk7CiAgICBpZiAoaW5mPGVzdHJlbW9zKSB0aGVuIG9yZGluYW1lbnRvKGluZixlc3RyZW1vcyx2LG9yZGluYXRvKTsKZW5kOwoKYmVnaW4KICAgIHsKICAgIHVuY29tbWVudCB0aGUgZm9sbG93aW5nIGxpbmVzIGlmIHlvdSB3YW50IHRvIHJlYWQvd3JpdGUgZnJvbSBmaWxlcwogICAgYXNzaWduKGlucHV0LCAgJ2lucHV0LnR4dCcpOyAgcmVzZXQoaW5wdXQpOwogICAgYXNzaWduKG91dHB1dCwgJ291dHB1dC50eHQnKTsgcmV3cml0ZShvdXRwdXQpOwp9CiAgICByZWFkbG4oIE4sIEssIEwpOwogICAgZm9yIGk6PTAgdG8gTi0xIGRvCiAgICAgICAgcmVhZChBW2ldKTsKICAgIHJlYWRsbjsKICAgIGZvciBpIDo9IDAgdG8gTi0xIGRvCiAgICAgICAgaWYgKEFbaV0gPj0gSykgdGhlbiBBW2ldIDo9IEFbaV0tSzsKICAgIAogICAgd3JpdGVsbihkZW1vbGlzaChOLCBLLCBMLCBBKSk7CiAKZW5kLgo=