#include <bits/stdc++.h>
using namespace std;
const int P = 998244353;
int pw2(int y) {
  if (y < 0) y += P - 1;
  int x = 2;
  int s = 1;
  for (; y; y >>= 1, x = (long long)x * x % P)
    if (y & 1) s = (long long)s * x % P;
  return s;
}
int k, c[100];
long long a[100];
void calc(int t, long long x) {
  if (t > k) {
    ++c[__builtin_popcountll(x)];
    return;
  }
  calc(t + 1, x), calc(t + 1, x ^ a[t]);
}
int m, C[100][100];
long long bs[100];
bool ins(long long x) {
  for (int i = m - 1, iend = 0; i >= iend; --i)
    if (x >> i & 1) {
      if (bs[i]) {
        if (!(x ^= bs[i])) return false;
      } else {
        for (int j = i - 1, jend = 0; j >= jend; --j)
          if (bs[j] && (x & (1LL << j))) x ^= bs[j];
        bs[i] = x;
        for (int j = i + 1, jend = m - 1; j <= jend; ++j)
          if (bs[j] && (bs[j] & (1LL << i))) bs[j] ^= bs[i];
        return true;
      }
    }
  return false;
}
int main() {
  int n, b = 0;
  scanf("%d%d", &n, &m);
  for (int i = 1, iend = n; i <= iend; ++i) {
    long long x;
    scanf("%lld", &x);
    b += ins(x);
  }
  if (b <= m / 2) {
    for (int i = 0, iend = m - 1; i <= iend; ++i)
      if (bs[i]) a[++k] = bs[i];
    calc(1, 0);
    for (int i = 0, iend = m; i <= iend; ++i)
      printf("%d ", ((long long)c[i] * pw2(n - k)) % P);
  } else {
    for (int i = 0, iend = m - 1; i <= iend; ++i)
      if (!bs[i]) {
        int t = 0;
        ++k;
        for (int j = 0, jend = m - 1; j <= jend; ++j)
          if (bs[j]) {
            a[k] |= (bs[j] >> i & 1) << t;
            ++t;
          }
        a[k] |= 1LL << (b + k);
      }
    calc(1, 0);
    for (int i = 0, iend = m; i <= iend; ++i) {
      C[i][0] = 1;
      for (int j = 1, jend = i; j <= jend; ++j)
        C[i][j] = (C[i - 1][j] + C[i - 1][j - 1]) % P;
    }
    for (int i = 0, iend = m; i <= iend; ++i) {
      int tot = 0;
      for (int j = 0, jend = m; j <= jend; ++j) {
        int s = 0;
        for (int k = 0, kend = i; k <= kend; ++k) {
          int x = (long long)C[j][k] * C[m - j][i - k] % P;
          if (k & 1)
            s = (s + P - x) % P;
          else
            s = (s + x) % P;
        }
        tot = (tot + (long long)s * c[j]) % P;
      }
      printf("%d ", (long long)tot * pw2(n - m) % P);
    }
  }
  return 0;
}
