#include <bits/stdc++.h>
using namespace std;
long long extGcd(long long a, long long b, long long& x, long long& y) {
  if (b == 0) {
    x = 1, y = 0;
    return a;
  }
  long long x2, y2;
  long long g = extGcd(b, a % b, x2, y2);
  x = y2;
  y = x2 - (a / b) * y2;
  return g;
}
int c3, c4, c5;
inline int F(int k3, int k4, int k5) {
  if (k3 > k4 || k4 > k5) return 1 << 30;
  return abs(c3 * k3 - c4 * k4) + abs(c4 * k4 - c5 * k5);
}
int main() {
  int n, s;
  while (scanf("%d%d", &n, &s) != EOF) {
    c3 = c4 = c5 = 0;
    for (int i = 0; i < n; ++i) {
      int score;
      scanf("%d", &score);
      if (score == 3)
        ++c3;
      else if (score == 4)
        ++c4;
      else if (score == 5)
        ++c5;
    }
    int minv = -1;
    int res3, res4, res5;
    for (int k3 = 0; k3 * (c3 + c4 + c5) <= s; ++k3) {
      int sum = s - k3 * c3;
      long long k4, k5;
      long long g = extGcd(c4, c5, k4, k5);
      if (sum % g) continue;
      k4 *= sum / g;
      k5 *= sum / g;
      if (k4 < k3) {
        int factor = (k3 - k4 - 1) / (c5 / g) + 1;
        k4 += factor * c5 / g;
        k5 -= factor * c4 / g;
      } else if (k5 < k4) {
        int factor = (k4 - k5 - 1) / (c4 / g + c5 / g) + 1;
        k5 += factor * c4 / g;
        k4 -= factor * c5 / g;
      }
      int lo = 0, hi = (k5 - k4) / ((c4 + c5) / g);
      int p4 = c4 / g, p5 = c5 / g;
      while (hi - lo > 3) {
        int lm = lo + (hi - lo) / 3, rm = lo + (hi - lo) * 2 / 3;
        int lv = F(k3, k4 + lm * p5, k5 - lm * p4);
        int rv = F(k3, k4 + rm * p5, k5 - rm * p4);
        if (lv < rv)
          hi = rm;
        else
          lo = lm;
      }
      for (int f = lo; f <= hi; ++f) {
        int v = F(k3, k4 + f * p5, k5 - f * p4);
        if (v == 1 << 30) continue;
        if (minv == -1 || minv > v) {
          minv = v;
          res3 = k3, res4 = k4 + f * p5, res5 = k5 - f * p4;
        }
      }
      lo = 0, hi = (k4 - k3) / p5;
      while (hi - lo > 3) {
        int lm = lo + (hi - lo) / 3, rm = lo + (hi - lo) * 2 / 3;
        int lv = F(k3, k4 - lm * p5, k5 + lm * p4);
        int rv = F(k3, k4 - rm * p5, k5 + rm * p4);
        if (lv < rv)
          hi = rm;
        else
          lo = lm;
      }
      for (int f = lo; f <= hi; ++f) {
        int v = F(k3, k4 - f * p5, k5 + f * p4);
        if (v == 1 << 30) continue;
        if (minv == -1 || minv > v) {
          minv = v;
          res3 = k3, res4 = k4 - f * p5, res5 = k5 + f * p4;
        }
      }
    }
    if (minv >= 0) {
      printf("%d %d %d\n", res3, res4, res5);
    } else {
      printf("-1\n");
    }
  }
  return 0;
}
