#include <bits/stdc++.h>
using namespace std;
int n, m, ans, ansi, ansj, ansk;
int c[1000];
int gcd(int x, int y) {
  if (y == 0) return x;
  return gcd(y, x % y);
}
int getabs(int x) {
  if (x > 0) return x;
  return -x;
}
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= n; i++) {
    int x;
    scanf("%d", &x);
    c[x]++;
  }
  int ans = 1 << 30, g = gcd(c[4], c[5]);
  for (int i = m / (c[3] + c[4] + c[5]); i >= 0; i--) {
    if ((m - i * c[3]) % g != 0) continue;
    int st = (m - i * c[3]) / (c[4] + c[5]);
    for (int j = st; j >= i; j--) {
      if ((m - i * c[3] - j * c[4]) % c[5] != 0) continue;
      int k = (m - i * c[3] - j * c[4]) / c[5];
      if (i * c[3] - j * c[4] > ans) break;
      if (getabs(i * c[3] - j * c[4]) + (k * c[5] - j * c[4]) > ans) break;
      if (k < j) continue;
      if (getabs(i * c[3] - j * c[4]) + getabs(j * c[4] - k * c[5]) < ans) {
        ans = getabs(i * c[3] - j * c[4]) + getabs(j * c[4] - k * c[5]);
        ansi = i, ansj = j, ansk = k;
      }
    }
  }
  if (ans == 1 << 30)
    printf("-1\n");
  else
    printf("%d %d %d\n", ansi, ansj, ansk);
}
