#include<stdio.h>
#include<algorithm>
using namespace std;
int A[1001000], B[1001000];
int pp=1, C[4001000];
int s(int s, int e){
    int su =0, k;
    s += pp;
    e += pp;
    k = e;
    while(s<e){
        if(s%2==0) su = su+C[s];
        if(e%2==1) su = su+C[e];
        s = s/2;
        e = e/2;
    }
    if(s==e) su = su+C[s];
    return su;
}
int main(){
    int n, m, k, i, j, ma, mi,ans, t=0, ii, jj, tt;
    scanf("%d %d %d",&n, &m, &k);
    for(i=0;i<n;i++) scanf("%d", A+i);
    j = 0;
    ma = 0;
    mi = m+1;
    ans = 0;
    j = 0;
    while(pp<m)pp = pp*2;
    for(i=0;i<n;i++){
        tt = pp + A[i];
        while(tt){
            C[tt]++;
            tt = tt/2;
        }
        if(ma<A[i]){
            ma=A[i];
            if(ma-mi>k){
                while(s(mi,ma-k-1)){
                    tt = pp + A[j];
                    while(tt){
                        C[tt]--;
                        tt = tt/2;
                    }
                    j++;
                }
                ans = i-j+1;
                mi = max(mi, ma-k);
            }else{
                ans++;
                if(t<ans) t= ans;
            }
        }else if(mi>A[i]){
            mi = A[i];
            if(ma-mi>k){
                while(s(k+mi+1,ma)){
                    tt = pp + A[j];
                    while(tt){
                        C[tt]--;
                        tt = tt/2;
                    }
                    j++;
                }
                ma = min(ma, mi+k);
                ans = i-j+1;
                
            }else{
                ans++;
                if(t<ans) t= ans;
            }
        }else{
            ans++;
            if(t<ans) t= ans;
        }
    }
    printf("%d",t);
}
