#include <bits/stdc++.h>
using namespace std;
void Weapons19() {
  cin.sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
}
long long int fun(long long int m, vector<long long int> &v) {
  map<long long int, long long int> z;
  set<long long int> s;
  for (long long int i = 0; i < m; i++) {
    s.insert(v[i]);
    z[v[i]]++;
  }
  long long int ans = *(--s.end()) - *s.begin();
  for (long long int i = m; i < v.size(); i++) {
    z[v[i - m]]--;
    if (z[v[i - m]] == 0) s.erase(v[i - m]);
    s.insert(v[i]);
    z[v[i]]++;
    ans = min(ans, *(--s.end()) - *s.begin());
  }
  return ans;
}
vector<pair<long long int, long long int> > p;
void fun2(vector<long long int> &v, long long int m, long long int k) {
  map<long long int, long long int> z;
  set<long long int> s;
  long long int a = 0, b = 0;
  while (1) {
    if (b - a != m) {
      z[v[b]]++;
      s.insert(v[b]);
      b++;
    } else {
      if (*(--s.end()) - *s.begin() <= k) p.push_back({a, b});
      z[v[a]]--;
      if (z[v[a]] == 0) s.erase(v[a]);
      if (b == v.size()) break;
      z[v[b]]++;
      s.insert(v[b]);
      a++;
      b++;
    }
  }
}
int32_t main() {
  Weapons19();
  long long int n, k;
  cin >> n >> k;
  vector<long long int> v(n);
  for (long long int i = 0; i < n; i++) cin >> v[i];
  long long int s = 1, e = n;
  while (s != e) {
    long long int m = (s + e + 1) / 2;
    if (fun(m, v) <= k)
      s = m;
    else
      e = m - 1;
  }
  fun2(v, s, k);
  cout << s << " " << p.size() << "\n";
  for (auto a : p) cout << a.first + 1 << " " << a.second << "\n";
}
