#include <bits/stdc++.h>
using namespace std;
struct Bitset {
  int sz, len;
  vector<unsigned int> v;
  Bitset(int szz) {
    len = szz;
    sz = szz + 31 >> 5;
    v.clear();
    v.resize(sz, 0);
  }
  Bitset operator<<=(int x) {
    int d = x >> 5, r = x & 31;
    for (int i = sz - 1; i >= d; i--) v[i] = v[i - d];
    for (int i = d - 1; i >= 0; i--) v[i] = 0;
    if (r) {
      for (int i = sz - 1; i >= 1; i--)
        v[i] = ((v[i] & ((1u << 32 - r) - 1)) << r) | (v[i - 1] >> 32 - r);
      v[0] = (v[0] & ((1u << 32 - r) - 1)) << r;
    }
  }
  Bitset operator|(const Bitset &b) {
    Bitset rlt = Bitset(len);
    for (int i = 0; i < sz; i++) rlt.v[i] = v[i] | b.v[i];
    return rlt;
  }
  Bitset operator^(const Bitset &b) {
    Bitset rlt = Bitset(len);
    for (int i = 0; i < sz; i++) rlt.v[i] = v[i] ^ b.v[i];
    return rlt;
  }
  vector<int> get() {
    vector<int> rlt;
    for (int i = 0; i < sz; i++)
      if (v[i]) {
        for (int j = 0; j < 32; j++)
          if (v[i] & (1u << j)) rlt.push_back((i << 5) | j);
      }
    return rlt;
  }
  bool bit(int x) { return v[x >> 5] & (1u << (x & 31)); }
};
int n, s, a[70707], id[70707], in[70707];
bool vis[70707];
set<int> st[70707];
bool cmp(int i, int j) {
  return a[i] != a[j] ? a[i] < a[j] : !vis[i] && vis[j];
}
int main() {
  Bitset val = Bitset(70707), nwb = Bitset(70707), tmp = Bitset(70707);
  scanf("%d %d", &n, &s);
  int I = 0;
  for (int i = 1; i <= n; i++) {
    scanf("%d", &a[i]);
    if (a[i] > s) return puts("-1"), 0;
    if (a[i] > a[I]) I = i;
  }
  vis[I] = 1;
  s -= a[I];
  val.v[0] = 1;
  for (int i = 1; i <= n && s; i++)
    if (!vis[i] && a[i] <= s) {
      tmp = val;
      tmp <<= a[i];
      nwb = val ^ (val | tmp);
      val = val | tmp;
      vector<int> v = nwb.get();
      for (int j = 0; j < v.size(); j++) {
        if (v[j] <= s) st[i].insert(v[j]);
      }
    }
  if (!val.bit(s)) return puts("-1"), 0;
  for (int i = n; i >= 1; i--) {
    if (st[i].find(s) != st[i].end()) {
      s -= a[i];
      vis[i] = 1;
    }
  }
  for (int i = 1; i <= n; i++) id[i] = i;
  sort(id + 1, id + n + 1, cmp);
  for (int i = 1; i <= n; i++) {
    if (!vis[id[i]]) {
      in[id[i + 1]] = id[i];
    }
  }
  for (int i = 1; i <= n; i++) {
    printf("%d ", a[i] - a[in[i]]);
    if (in[i])
      printf("1 %d\n", in[i]);
    else
      puts("0");
  }
  return 0;
}
