#include <bits/stdc++.h>
using namespace std;
struct node {
  int i, j;
};
vector<node> step;
int main() {
  int n, k;
  int a[105], flag[105] = {0};
  scanf("%d%d", &n, &k);
  for (int i = 0; i < n; i++) {
    scanf("%d", &a[i]);
  }
  int maxmum;
  int minmum;
  int s, m = 0;
  for (int j = 0; j <= k; j++) {
    maxmum = 0;
    minmum = 0;
    for (int i = 0; i < n; i++) {
      if (a[i] > a[maxmum] && flag[i] < 1) maxmum = i;
      if (a[i] < a[minmum] && flag[i] > -1) minmum = i;
    }
    if (a[maxmum] - a[minmum] < 2 || j == k) break;
    flag[maxmum] = -1;
    flag[minmum] = 1;
    a[maxmum]--;
    a[minmum]++;
    m++;
    node t;
    t.i = maxmum;
    t.j = minmum;
    step.push_back(t);
  }
  s = a[maxmum] - a[minmum];
  printf("%d %d\n", s, m);
  for (int i = 0; i < m; i++) {
    printf("%d %d\n", step[i].i + 1, step[i].j + 1);
  }
  return 0;
}
