#include <bits/stdc++.h>
using namespace std;
const int maxN = 200005, maxM = 60, p = 998244353;
void MOD(int &x) {
  if (x >= p) x -= p;
}
int N, M, K;
long long A[maxM], B[maxM];
int pow2[maxN], ipow2[maxM];
void Insert(long long x) {
  for (int i = M - 1; ~i; i--)
    if ((x >> i) & 1) {
      if (A[i])
        x ^= A[i];
      else {
        A[i] = x, K++;
        return;
      }
    }
}
long long G[maxM];
int len;
long long ans[maxM];
void DFS(int k, long long x) {
  if (k == len) {
    ans[__builtin_popcountll(x)]++;
    return;
  }
  DFS(k + 1, x);
  DFS(k + 1, x ^ G[k]);
}
int C[maxM][maxM], W[maxM][maxM];
int main() {
  scanf("%d%d", &N, &M);
  pow2[0] = ipow2[0] = 1;
  for (int i = 1; i <= N; i++) {
    long long tmp;
    scanf("%lld", &tmp);
    Insert(tmp);
    pow2[i] = pow2[i - 1] << 1;
    MOD(pow2[i]);
  }
  for (int i = 1; i <= M; i++)
    ipow2[i] = 1LL * ipow2[i - 1] * ((p + 1) / 2) % p;
  for (int i = 0; i < M; i++)
    for (int j = 0; j < i; j++)
      if (A[i] >> j & 1) A[i] ^= A[j];
  if (K <= M / 2) {
    for (int i = 0; i < M; i++)
      if (A[i]) G[len++] = A[i];
    DFS(0, 0);
    for (int i = 0; i <= M; i++) ans[i] %= p;
    for (int i = 0; i <= M; i++) printf("%d ", 1LL * ans[i] * pow2[N - K] % p);
    return 0;
  }
  for (int i = 0; i < M; i++)
    for (int j = 0; j < M; j++) B[j] |= (A[i] >> j & 1) << i;
  for (int i = 0; i < M; i++) {
    B[i] ^= 1LL << i;
    if (B[i]) G[len++] = B[i];
  }
  DFS(0, 0);
  for (int i = 0; i <= M; i++) ans[i] %= p;
  for (int i = 0; i <= M; i++) {
    C[i][0] = 1;
    for (int j = 1; j <= i; j++)
      C[i][j] = C[i - 1][j] + C[i - 1][j - 1], MOD(C[i][j]);
  }
  for (int i = 0; i <= M; i++)
    for (int j = 0; j <= M; j++)
      for (int k = 0; k <= i; k++) {
        if (k & 1)
          W[i][j] += p - 1LL * C[j][k] * C[M - j][i - k] % p;
        else
          W[i][j] += 1LL * C[j][k] * C[M - j][i - k] % p;
        MOD(W[i][j]);
      }
  int L = 1LL * pow2[N] * ipow2[M] % p;
  for (int i = 0; i <= M; i++) {
    int tmp = 0;
    for (int j = 0; j <= M; j++) tmp += 1LL * ans[j] * W[i][j] % p, MOD(tmp);
    printf("%d ", 1LL * tmp * L % p);
  }
  return 0;
}
