#include <bits/stdc++.h>
using namespace std;
int n, k;
int v[100000 + 1];
int mx, rez;
pair<int, int> rz[100000 + 1];
int stkLen;
int stkLen2;
int stk[100000 + 1];
int stk2[100000 + 1];
int s, s2;
void readFile() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie();
  cin >> n >> k;
  for (int i = 1; i <= n; i++) cin >> v[i];
}
int cautBin(int nr, int stk[], int stkLen) {
  int i = 0;
  int pas = 1 << 16;
  while (pas != 0) {
    if (i + pas <= stkLen && abs(v[stk[i + pas]] - nr) > k) i += pas;
    pas >>= 1;
  }
  return stk[i] + 1;
}
bool verif(int st, int dr) {
  while (s < stkLen && stk[s] < st) s++;
  while (s2 < stkLen2 && stk2[s2] < st) s2++;
  return (abs(v[stk[s]] - v[stk2[s2]]) <= k);
}
void solve() {
  stkLen = 0;
  int st = 1;
  s = s2 = 1;
  for (int i = 1; i <= n; i++) {
    while (stkLen >= s && v[i] >= v[stk[stkLen]]) stkLen--;
    stk[++stkLen] = i;
    while (stkLen2 >= s2 && v[i] <= v[stk2[stkLen2]]) stkLen2--;
    stk2[++stkLen2] = i;
    while (st < i && verif(st, i) == 0) st++;
    int len = i - st + 1;
    if (len > mx) {
      mx = len;
      rez = 0;
    }
    if (len == mx) rz[++rez] = {st, i};
  }
}
void printFile() {
  cout << mx << " " << rez << "\n";
  for (int i = 1; i <= rez; i++)
    cout << rz[i].first << " " << rz[i].second << "\n";
}
int main() {
  readFile();
  solve();
  printFile();
  return 0;
}
