#include <iostream>
#include <vector>
using namespace std;
struct node
{
int begin, end;
};
vector<long long> v;
int getindex(int low, int high, long long goal)
{
int mid;
while(low < high)
{
mid = (low + high) / 2;
if(v[mid] >= goal)
{
high = mid;
}
else
{
low = mid + 1;
}
}
return high;
}
int main()
{
int n;
long long m;
scanf("%d%lld", &n, &m);
int i;
long long num;
v.push_back(0);
for(i = 1; i <= n; i++)
{
scanf("%lld", &num);
v.push_back(num + v[i - 1]);
}
int flag = 0, res, index;
long long min = -1, cur;
vector<node> vn[2];
node nod;
for(i = 1; i <= n; i++)
{
index = getindex(i, n + 1, m + v[i - 1]);
if(index == n + 1)
{
break;
}
res = 0;
cur = v[index] - v[i - 1];
if(cur == m)
{
flag = res = 1;
}
else
{
if(flag == 0)
{
if(min == -1 || cur < min)
{
vn[0].clear();
min = cur;
res = 1;
}
else if(min == cur)
{
res = 1;
}
}
}
if(res == 1)
{
nod.begin = i;
nod.end = index;
vn[flag].push_back(nod);
}
}
int size = vn[flag].size();
for(i = 0; i < size; i++)
{
nod = vn[flag][i];
printf("%d-%d\n", nod.begin, nod.end);
}
system("pause");
return 0;
}