#include using namespace std; #define fi first #define se second #define repl(i,a,b) for(int i=(int)(a);i<(int)(b);i++) #define rep(i,n) repl(i,0,n) #define each(itr,v) for(auto itr:v) #define pb(s) push_back(s) #define mp(a,b) make_pair(a,b) #define all(x) (x).begin(),(x).end() #define dbg(x) cout<<#x"="<(x).count() typedef long long ll; typedef unsigned long long ull; typedef pair P; typedef pair PPI; typedef pair PL; typedef pair PPL; #define INF INT_MAX/3 #define MAX_N (1<<18) struct RangeMinQuery{ int idx[2*MAX_N-1]; int dat[MAX_N]; int size; void update(int k){ k+=size-1; idx[k]=k-(size-1); while(k>0){ k=(k-1)/2; if(idx[k*2+1]!=-1&&idx[k*2+2]!=-1){ if(dat[idx[k*2+1]]<=dat[idx[k*2+2]])idx[k]=idx[k*2+1]; else idx[k]=idx[k*2+2]; }else{ idx[k]=max(idx[k*2+1],idx[k*2+2]); } } } void init(int *a,int n_){ size=1; while(size>n>>d>>K; rep(i,n){ cin>>a[i]; a[i]=-a[i]; } s.init(a,n); ll res=0; ll j,k; rep(i,n){ int idx=s.query(i+1,min(n,i+d+1)); if(idx>=0&&res<-a[idx]+a[i]){ res=-a[idx]+a[i]; j=i; k=idx; } } cout<0)cout<