#include <stdio.h>
#define N 500010
int v[N],n,t,t2,h[N];
inline void swap(int &x,int &y){
int z=x;x=y;y=z;
}
void sift(int h[],int k,int n){
int son=0;
do{
if(2*k<=n) son=2*k;
if(2*k+1<=n && v[h[2*k+1]]<v[h[son]]) son=2*k+1;
if(v[h[son]]>=v[h[k]])
son=0;
else {
swap(h[k],h[son]);
k=son;
}
}
while(son);
}
void percolate(int h[],int k,int n){
int key=h[k];
while(k>1 && v[key]<v[h[k/2]]){
h[k]=h[k/2];
k/=2;
}
h[k]=key;
}
void add(int h[],int key,int &n){
h[++n]=key;
percolate(h,n,n);
}
void cut(int h[],int k,int &n){
h[k]=h[n];
n--;
if(k>1 && v[h[k/2]]>v[h[k]])
percolate(h,k,n);
else
sift(h,k,n);
}
void build_heap(int h[],int n){
for(int i=n/2;i>0;i--)
sift(h,i,n);
}
int main(){
int i,min,x;
freopen("secventa.in","r",stdin);
freopen("secventa.out","w",stdout);
scanf("%d%d",&n,&t);
for(i=1;i<=n;i++)
scanf("%d",&v[i]);
for(i=1;i<=t;i++)
h[i]=i;
build_heap(h,t);min=v[h[1]];x=t;t2=t;
for(i=t+1;i<=n;i++){
while (i-t>=h[1])
cut(h,1,t2);
add(h,i,t2);
if(v[h[1]]>min){
min=v[h[1]];x=i;
}
}
printf("%d %d %d",x-t+1,x,min);
return 0;
}