#include <bits/stdc++.h>
using namespace std;
const int MN = 400005, inf = 1000000005, MOD = 1000000007;
const double XD_PI = 3.14159265358979323846;
long long A[MN], B[MN], C[MN];
int ile[MN];
namespace FFT {
const int MAX = 1 << 20;
int N;
complex<double> omega[MAX];
complex<double> a1[MAX], a2[MAX];
complex<double> z1[MAX], z2[MAX];
void fft(complex<double> *a, complex<double> *z, int m = N) {
  if (m == 1) {
    z[0] = a[0];
  } else {
    int s = N / m;
    m /= 2;
    fft(a, z, m);
    fft(a + s, z + m, m);
    for (long long i = (long long)0; i < (long long)m; i++) {
      complex<double> c = omega[s * i] * z[m + i];
      z[m + i] = z[i] - c;
      z[i] += c;
    }
  }
}
void mult(long long *a, long long *b, long long *c, int len) {
  N = 2 * len;
  while (N & (N - 1)) ++N;
  assert(N <= MAX);
  for (long long i = (long long)0; i < (long long)N; i++) a1[i] = 0;
  for (long long i = (long long)0; i < (long long)N; i++) a2[i] = 0;
  for (long long i = (long long)0; i < (long long)len; i++) a1[i] = a[i];
  for (long long i = (long long)0; i < (long long)len; i++) a2[i] = b[i];
  for (long long i = (long long)0; i < (long long)N; i++)
    omega[i] = polar(1.0, 2 * XD_PI / N * i);
  fft(a1, z1, N);
  fft(a2, z2, N);
  for (long long i = (long long)0; i < (long long)N; i++)
    omega[i] = complex<double>(1, 0) / omega[i];
  for (long long i = (long long)0; i < (long long)N; i++)
    a1[i] = z1[i] * z2[i] / complex<double>(N, 0);
  fft(a1, z1, N);
  for (long long i = (long long)0; i < (long long)2 * len; i++)
    c[i] = round(z1[i].real());
}
}  // namespace FFT
long long npo2(long long x) { return ((x * (x - 1ll)) >> 1); }
int main() {
  int n, x;
  scanf("%d%d", &n, &x);
  int s = 0;
  for (int i = 1; i <= n; ++i) {
    int a;
    scanf("%d", &a);
    if (a < x) ++s;
    ++ile[s];
  }
  ile[0]++;
  for (int i = 0; i <= n; ++i) A[i] = ile[i], B[i] = ile[n - i];
  FFT::mult(A, B, C, n + 1);
  C[n] = 0;
  for (int i = 0; i <= n; ++i) C[n] += npo2(ile[i]);
  for (int i = n; i >= 0; --i) printf("%lld ", C[i]);
  return 0;
}
