#include <bits/stdc++.h>
using namespace std;
#define int              long long int
#define double           long double
#define print(a)         for(auto x : a) cout << x << " "; cout << endl
inline int power(int a, int b) {
    int x = 1;
    while (b) {
        if (b & 1) x *= a;
        a *= a;
        b >>= 1;
    }
    return x;
}
 
 
const int M = 1000000007;
const int N = 3e5+9;
const int INF = 2e9+1;
const int LINF = 2000000000000000001;
 
//_ ***************************** START Below *******************************
 
 
 

vector<int> a;

pair<int,int> getMaxSubarraySum(int n, int d, double mean){
	
	// Subtract a small epsilon to handle precision loss
	mean = mean - 1e-12;
	
	vector<double> t(n);
	for(int i=0; i<n; i++){
		t[i] = a[i] - mean;
	}
	
	vector<double> prefix(n);
	double sum = 0;
	
	double mini = 0;
	int miniI = -1;
	
	for(int i=0; i<n; i++){
		sum += t[i];
		
		if(i-d>=-1){
			double lastSum = i-d==-1 ? 0 : prefix[i-d];
			if(lastSum < mini){
				mini = lastSum;
				miniI = i-d;
			}
			
			double maxSum = sum - mini;
			
			if(maxSum >= 0){
				return {miniI+2, i+1 };
			}
		}
		
		prefix[i] = sum;
	}
	
	return {1, 1+d};
}


bool isPossible(int n, int d, double mid){
	vector<double> transformed(n);
	for(int i=0; i<n; i++){
		transformed[i] = a[i] - mid;
	}
	
	vector<double> prefix(n);
	
	double sum = 0;
	double maxSum = -INF;
	
	double mini = 0; //* Null == 0 for prefix Sum
	// double mini = INF; //* Not suited here
	
	for(int i=0; i<n; i++){
		sum += transformed[i];
		
		if(i-d>=-1){
			double lastSum = i-d==-1 ? 0 : prefix[i-d];
			mini = min(mini, lastSum);
				
			maxSum = max(maxSum, sum-mini);
		}
		prefix[i] = sum;
	}
	
	return maxSum >= 0;
}


 
pair<int,int> consistency(int n, int d){
 
	double s = -INF;
	double e = INF;
	
	double maxMean = 0;
	
	for(int i=1; i<=100; i++){
		double mid = s + (e-s)/2;
		
		if(isPossible(n, d, mid)){
			maxMean = mid;
			s = mid;
		}
		else e = mid;
		
	}
 
	
	auto indices =  getMaxSubarraySum(n, d, maxMean);
	
	return indices;
}

















pair<int,int> practice(int n, int d){
	
	return {};
	
}




 
void solve() {
 
    int n, d;
    cin>>n>>d;
    a.resize(n);
 
    for(int i=0; i<n; i++) cin >> a[i];
    
	auto ans1 = consistency(n, d);
	
	cout << ans1.first << " " << ans1.second << endl;
    
    
	// auto p = practice(n, d);
	// cout << ans1.first << " " << ans1.second  << " -> " << p.first << " " << p.second << endl;
 
}
 
 
 
 
 
int32_t main() {
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
 
    int t = 1;
    while (t--) {
        solve();
    }
 
    return 0;
}

