#include <bits/stdc++.h> using namespace std; #define INF INT_MAX struct keycompare { bool operator()(const pair<int, int>& v, const int& k) { return (v.first < k); } bool operator()(const int& k, const pair<int, int>& v) { return (k < v.first); } }; pair<int,int> prefixSum(vector<int> l, int n, int k){ int st,en,len = INF; vector<pair<int,int>> prefixL(n+1); prefixL[0].first = 0; prefixL[0].second = 0; for(int i=0;i<n;i++){ prefixL[i+1].first = prefixL[i].first + l[i]; prefixL[i+1].second = i+1; } for(int i=0;i<n;i++){ int x = lower_bound(prefixL.begin(), prefixL.end(), prefixL[i].first + k, keycompare()) - prefixL.begin(); if(x <= n && prefixL[x].first == prefixL[i].first + k && x-i < len && prefixL[x].second > prefixL[i].second){ len = x-i; en = x-1; st = i; } } return {st,en}; } int main() { int n,k; cin >> n >> k; vector<int> l(n); for(int i=0;i<n;i++) cin >> l[i]; pair<int,int> ans = prefixSum(l,n,k); cout << ans.first << " " << ans.second; }