#include <bits/stdc++.h>
#ifdef _POSIX_SOURCE
#define getchar getchar_unlocked
#endif // _POSIX_SOURCE
using namespace std;
ofstream fout ("secventa.out");
const int nMAX = 500e3;
const int lognMAX = 18;
int n, k;
int v[nMAX + 1];
int rmq[nMAX + 1][lognMAX + 1];
void buildRMQ()
{
for (int i = 1; i <= n; ++i)
rmq[i][0] = v[i];
for (int j = 1; (1 << j) <= n; ++j)
for (int i = 1; i-1 + (1<<j) <= n; ++i)
rmq[i][j] = min(rmq[i][j-1], rmq[i + (1<<(j-1))][j-1]);
}
int queryRMQ(int a, int b)
{
int lg = 31 - __builtin_clz(b-a+1);
return min(rmq[a][lg], rmq[b-(1<<lg)+1][lg]);
}
int getint()
{
char c;
while ((c = getchar()) && (c == ' ' || c == '\n'));
int semn = 1, x = 0;
if (c == '-')
semn = -1;
else
x = c-'0';
while ((c = getchar()) && isdigit(c))
x = x*10 + c-'0';
return x;
}
int main()
{
freopen("secventa.in", "r", stdin);
n = getint();
k = getint();
for (int i = 1; i <= n; ++i)
v[i] = getint();
buildRMQ();
int max = INT_MIN, dr;
for (int i = k; i <= n; ++i)
{
int qu = queryRMQ(i-k+1, i);
if (qu > max)
{
max = qu;
dr = i;
}
}
fout << dr-k+1 << ' ' << dr << ' ' << max;
}