#include <bits/stdc++.h>
using namespace std;
int random(int k) {
  static int x = time(0);
  x += (x << 2) + (x >> 2) + (x << 4) + (x >> 4) + 1;
  x &= (0x7fffffff);
  return x % k;
}
int gcd(int x, int y) {
  if (y == 0)
    return x;
  else
    return gcd(y, x % y);
}
int c3, c4, c5;
int calc(int m, int a, int b, int c, int k, int bs, int w4) {
  int x = k * m + bs;
  int y = (c - a * x) / b;
  return abs(x * c3 - w4) + abs(y * c5 - w4);
}
void lemon() {
  int n, s;
  scanf("%d%d", &n, &s);
  c3 = 0;
  c4 = 0;
  c5 = 0;
  for (int i = (1); i <= (n); i++) {
    int x;
    scanf("%d", &x);
    if (x == 3) c3++;
    if (x == 4) c4++;
    if (x == 5) c5++;
  }
  int fmin = 1000000000, fk3, fk4, fk5;
  for (int k4 = (0); k4 <= (s / (c4 + c5)); k4++) {
    int w4 = k4 * c4, sa = s - w4;
    int w3max = k4 * c3, w5min = k4 * c5;
    w3max = min(w3max, sa - w5min);
    int k3max = w3max / c3;
    int a = c3, b = c5, c = sa;
    if (c % gcd(a, b) != 0) continue;
    int bs = 0;
    while ((c - a * bs) % b != 0) bs++;
    int k = b / gcd(a, b);
    if (bs > k3max) continue;
    int zlim = (k3max - bs) / k;
    int left = 0, right = zlim;
    while (left + 5 <= right) {
      int m1 = left + (right - left) / 3;
      int v1 = calc(m1, a, b, c, k, bs, w4);
      int m2 = left + (right - left) / 3 * 2;
      int v2 = calc(m2, a, b, c, k, bs, w4);
      if (v1 < v2)
        right = m2;
      else
        left = m1;
    }
    for (int m = (left); m <= (right); m++) {
      int v1 = calc(m, a, b, c, k, bs, w4);
      if (v1 < fmin)
        fmin = v1, fk3 = k * m + bs, fk4 = k4, fk5 = (c - a * fk3) / b;
    }
  }
  if (fmin == 1000000000)
    printf("-1\n");
  else
    printf("%d %d %d\n", fk3, fk4, fk5);
}
int main() {
  lemon();
  return 0;
}
