#include <bits/stdc++.h>
#pragma comment(linker, "/stack:16777216")
using namespace std;
const double PI = acos(-1.0);
const int INF = 1000000000;
const int MAX = 128;
bool used[70005];
int dp[70005];
vector<int> g[70005];
int c[70005];
int main() {
  int n, s;
  cin >> n >> s;
  vector<pair<int, int> > a;
  for (int i = (0); i < (n); ++i) {
    int x;
    cin >> x;
    a.push_back(make_pair(x, i));
    c[i] = x;
  }
  sort(a.begin(), a.end());
  if (s < a.back().first) {
    cout << -1 << endl;
    return 0;
  }
  s -= a.back().first;
  used[a.back().second] = 1;
  dp[0] = 1;
  int s1 = 0;
  for (int i = (0); i < (a.size() - 1); ++i) {
    s1 += a[i].first;
    s1 = min(s1, s);
    for (int j = (s1 - a[i].first + 1) - 1; j >= (0); --j)
      if (dp[j] && !dp[j + a[i].first]) dp[j + a[i].first] = i + 1;
    if (dp[s]) break;
  }
  if (!dp[s]) {
    cout << -1 << endl;
    return 0;
  }
  while (s > 0) {
    used[a[dp[s] - 1].second] = 1;
    s -= a[dp[s] - 1].first;
  }
  int p = a.back().second;
  for (int i = (a.size()) - 1; i >= (0); --i)
    if (!used[a[i].second]) {
      c[p] -= a[i].first;
      g[p].push_back(a[i].second);
      p = a[i].second;
    }
  for (int i = (0); i < (n); ++i) {
    cout << c[i] << ' ' << g[i].size() << ' ';
    for (int j = (0); j < (g[i].size()); ++j) cout << g[i][j] + 1 << ' ';
    cout << endl;
  }
  return 0;
}
