#include <bits/stdc++.h>
using namespace std;
template <class T>
string ToString(T t) {
  stringstream s;
  s << t;
  return s.str();
}
template <class T>
void ToOther(T& t, string a) {
  stringstream s(a);
  s >> t;
}
unsigned int n, S;
unsigned int a[1000005];
unsigned int d[70005];
unsigned int from[700005];
unsigned int big;
map<unsigned int, unsigned int> ck;
void up(unsigned int st, unsigned int pos, unsigned int idx) {
  unsigned int f = (~d[pos]) & st;
  while (f) {
    unsigned int pos2 = ck[f & -f];
    from[32 * pos + pos2] = idx;
    f -= (f & -f);
  }
  d[pos] |= st;
}
bool calc() {
  for (unsigned int i = 0; i < 32; i++) ck[1u << i] = i;
  unsigned int m = S / 32;
  memset(from, -1, sizeof(from));
  d[0] = 1;
  for (unsigned int i = 0; i < n; i++)
    if (i != big) {
      unsigned int c1 = a[i] / 32;
      unsigned int c2 = a[i] % 32;
      for (int k = m - c1; k >= 0; k--)
        if (d[k]) {
          if (c2) up(d[k] >> ((32u - c2)), k + c1 + 1, i);
          up(d[k] << c2, k + c1, i);
        }
    }
  return d[S / 32] >> (S % 32) & 1;
}
vector<pair<unsigned int, unsigned int> > v;
unsigned int rst[70005];
bool used[70005];
int main() {
  cin >> n >> S;
  unsigned int tempS = S;
  for (unsigned int i = 0; i < n; i++) {
    scanf("%u", a + i);
    if (a[big] < a[i]) big = i;
  }
  if (S < a[big]) return printf("-1\n"), 0;
  S -= a[big];
  if (calc() == 0) return printf("-1\n"), 0;
  while (S) {
    unsigned int idx = from[S];
    S -= a[idx];
    used[idx] = 1;
  }
  for (unsigned int i = 0; i < n; i++)
    if (used[i] == 0 || i == big) {
      v.push_back(pair<unsigned int, unsigned int>(a[i], i));
    }
  memset(rst, -1, sizeof(rst));
  sort((v).begin(), (v).end(), greater<pair<unsigned int, unsigned int> >());
  for (unsigned int i = 0; i < (unsigned int)v.size() - 1; i++) {
    unsigned int t = v[i].second;
    rst[t] = v[i + 1].second;
    a[t] -= v[i + 1].first;
  }
  for (unsigned int i = 0; i < n; i++) {
    printf("%u ", a[i]);
    if (rst[i] == -1)
      printf("0\n");
    else
      printf("1 %u\n", rst[i] + 1);
  }
}
