#include <bits/stdc++.h>
using namespace std;
int n, s, id;
int a[70456];
int pre[70456];
bool used[70456];
unsigned int f[2][70456 / 32];
int main() {
  scanf("%d%d", &n, &s);
  int id = 0;
  for (int i = 0; i < n; i++) {
    scanf("%d", a + i);
    if (a[i] > a[id]) id = i;
  }
  int m = a[id];
  if (s < m) {
    cout << -1 << endl;
    return 0;
  }
  s -= m;
  int w = s / 32 + 1;
  f[0][0] = 1;
  memset(pre, -1, sizeof pre);
  for (int i = 0, x = 0, y = 1; i < n; i++, x ^= 1, y ^= 1) {
    for (int j = 0; j < w; j++) f[y][j] = f[x][j];
    if (i == id || a[i] == 0) continue;
    int q = a[i] / 32, r = a[i] % 32;
    for (int j = 0; j < w; j++) {
      int k = j - q;
      unsigned int new_bit = 0;
      if (k < 0)
        continue;
      else if (k >= 0) {
        new_bit = (f[x][k] << r) & ~f[y][j];
        if (r) new_bit |= (f[x][k - 1] >> (32 - r)) & ~f[y][j];
      } else if (r)
        new_bit = (f[x][k - 1] >> (32 - r)) & ~f[y][j];
      f[y][j] |= new_bit;
      for (; new_bit; new_bit = (new_bit - 1) & new_bit) {
        assert(pre[j * 32 + __builtin_ffs(new_bit) - 1] == -1);
        pre[j * 32 + __builtin_ffs(new_bit) - 1] = i;
      }
    }
  }
  if (s && pre[s] == -1) {
    puts("-1");
    return 0;
  }
  for (int i = s; i; i -= a[pre[i]]) used[pre[i]] = 1;
  int sum = 0;
  for (int i = 0; i < n; i++)
    if (used[i]) sum += a[i];
  vector<pair<int, int> > tmp;
  for (int i = 0; i < n; i++)
    if (!used[i]) tmp.push_back(make_pair(-a[i], i));
  sort(tmp.begin(), tmp.end());
  for (int i = 0; i < tmp.size() - 1; i++) {
    int &x = tmp[i].second, &y = tmp[i + 1].second;
    pre[x] = y;
    a[x] = a[x] - a[y];
  }
  used[tmp.back().second] = true;
  for (int i = 0; i < n; i++) {
    if (used[i])
      printf("%d %d\n", a[i], 0);
    else
      printf("%d %d %d\n", a[i], 1, pre[i] + 1);
  }
}
