/*
题意:给一段区间,要求两段不交叉区间总和最大,求符合条件left_a 和 left_b的最小值
分析:dp 压缩区间值,对sum的值进行维护
*/
#include<iostream>
#include<algorithm>
#include<string>
#include<cmath>
#include<cstdio>
using namespace std;
#define manx 200009
long long dp[manx],maxx,sum;
int a[manx];
int main(){
int n,k,pos_a,pos_b,bb;
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
for(int i=1;i<=k;i++) dp[1]+=a[i];
for(int i=k+1;i<=n;i++) dp[i-k+1]=dp[i-k]-a[i-k]+a[i]; // 压缩
for(int i=n-2*k+1;i>=1;i--){
if(maxx<=dp[i+k]) maxx=dp[i+k], bb=i+k; //
if(sum<=maxx+dp[i]) sum=maxx+dp[i], pos_a=i, pos_b=bb; // 要求两段不交叉区间和最大
}
printf("%d %d\n",pos_a,pos_b);
}