#include <bits/stdc++.h>
using namespace std;
int main() {
  int n, k, i, h[100005], st = 0, ed = 0, ans = 0, cnt = 0;
  multiset<int> s;
  scanf("%d %d", &n, &k);
  for (i = 0; i < n; i++) {
    scanf("%d", h + i);
  }
  s.insert(h[0]);
  while (ed < n) {
    if (*s.rbegin() - *s.begin() <= k) {
      ans = max(ans, ed - st + 1);
      ed++;
      s.insert(h[ed]);
    } else {
      s.erase(s.find(h[st]));
      st++;
    }
  }
  printf("%d ", ans);
  s.clear();
  for (i = 0; i < ans - 1; i++) {
    s.insert(h[i]);
  }
  for (; i < n; i++) {
    s.insert(h[i]);
    if (*s.rbegin() - *s.begin() <= k) {
      cnt++;
    }
    s.erase(s.find(h[i - ans + 1]));
  }
  printf("%d\n", cnt);
  s.clear();
  for (i = 0; i < ans - 1; i++) {
    s.insert(h[i]);
  }
  for (; i < n; i++) {
    s.insert(h[i]);
    if (*s.rbegin() - *s.begin() <= k) {
      printf("%d %d\n", i - ans + 2, i + 1);
    }
    s.erase(s.find(h[i - ans + 1]));
  }
}
