#include <bits/stdc++.h>
using namespace std;
const int mod = 998244353;
int n, m, num = 0, cnt[300010];
long long a, b[110], c[110], sum[110], pw2[200010], C[110][110];
int getcnt(long long x) {
  return cnt[x & ((1 << 18) - 1)] + cnt[(x >> 18) & ((1 << 18) - 1)] +
         cnt[x >> 36];
}
long long power(long long a, int b) {
  long long ans = 1;
  for (; b; b >>= 1, a = a * a % mod)
    if (b & 1) ans = ans * a % mod;
  return ans;
}
void dfs1(int s, long long cur) {
  if (s == m) return (sum[getcnt(cur)] += pw2[n - num]) %= mod, void();
  dfs1(s + 1, cur);
  if (b[s]) dfs1(s + 1, cur ^ b[s]);
}
void dfs2(int s, long long cur) {
  if (s == num) return (sum[getcnt(cur)] += pw2[n - num]) %= mod, void();
  dfs2(s + 1, cur);
  dfs2(s + 1, cur ^ c[s]);
}
int main() {
  for (int i = 1; i < (1 << 18); i++) cnt[i] = cnt[i ^ (i & (-i))] + 1;
  cin >> n >> m;
  pw2[0] = 1;
  for (int i = 1; i <= n; i++) pw2[i] = pw2[i - 1] * 2 % mod;
  for (int i = 1; i <= n; i++) {
    scanf("%lld", &a);
    for (int j = m - 1; j >= 0; j--)
      if ((a >> j) & 1)
        if (b[j])
          a ^= b[j];
        else {
          b[j] = a;
          num++;
          break;
        }
  }
  if (num <= 26) {
    dfs1(0, 0);
    for (int i = 0; i <= m; i++) printf("%lld ", sum[i]);
  } else {
    for (int i = m - 1; i >= 0; i--)
      if (b[i])
        for (int j = i + 1; j < m; j++)
          if ((b[j] >> i) & 1) b[j] ^= b[i];
    num = 0;
    for (int i = 0; i < m; i++)
      if (!b[i]) c[num++] ^= (1ll << i);
    for (int i = 0; i < m; i++)
      if (b[i]) {
        int t = 0;
        for (int j = 0; j < m; j++)
          if (!b[j]) c[t++] ^= (((b[i] >> j) & 1) << i);
      }
    dfs2(0, 0);
    C[0][0] = 1;
    for (int i = 1; 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;
    }
    for (int i = 0; i <= m; i++) {
      long long ans = 0;
      for (int j = 0; j <= m; j++)
        for (int k = 0; k <= i && k <= j; k++)
          (ans += (k & 1 ? mod - 1 : 1) * sum[j] % mod * C[j][k] % mod *
                  C[m - j][i - k]) %= mod;
      printf("%lld ", ans * power(pw2[m - num], mod - 2) % mod);
    }
  }
  puts("");
  return 0;
}
