#include <bits/stdc++.h>
using namespace std;
int n, k, af, bf;
int arr[200000 + 10];
long long acu[200000 + 10];
long long num[200000 + 10], res;
struct par {
  long long v;
  int pos;
  bool operator<(par other) const {
    if (v == other.v) return pos > other.pos;
    return v < other.v;
  }
} st[800000 + 10], a, b;
par pregunta(int a, int b, int x, int y, int v) {
  if (a == x && b == y)
    return st[v];
  else {
    int m = (a + b) / 2;
    if (y <= m) return pregunta(a, m, x, y, 2 * v);
    if (x > m) return pregunta(m + 1, b, x, y, 2 * v + 1);
    return max(pregunta(a, m, x, m, 2 * v),
               pregunta(m + 1, b, m + 1, y, 2 * v + 1));
  }
}
void crea(int a, int b, int v) {
  if (a == b) {
    st[v].v = num[a];
    st[v].pos = a;
  } else {
    int m = (a + b) / 2;
    crea(a, m, 2 * v);
    crea(m + 1, b, 2 * v + 1);
    st[v] = max(st[2 * v], st[2 * v + 1]);
  }
}
int main() {
  scanf("%d%d", &n, &k);
  for (int i = 1; i <= n; i++) {
    scanf("%d", &arr[i]);
    acu[i] = acu[i - 1] + arr[i];
  }
  for (int i = k; i <= n; i++) num[i] = acu[i] - acu[i - k];
  crea(1, n, 1);
  for (int i = 1; i <= n; i++) {
    if (i <= n - k) a = pregunta(1, n, i + k, n, 1);
    if (i > k) b = pregunta(1, n, 1, i - k, 1);
    if (num[i] + max(a.v, b.v) > res) {
      res = num[i] + max(a.v, b.v);
      af = i;
      if (a.v == b.v)
        bf = min(a.pos, b.pos);
      else if (a.v > b.v)
        bf = a.pos;
      else
        bf = b.pos;
    }
    a.pos = a.v = b.v = b.pos = 0;
  }
  for (int i = 1; i <= n; i++) {
    if (i == af || i == bf) {
      printf("%d ", i - k + 1);
    }
  }
}
