#include <bits/stdc++.h>
using namespace std;
long long a[55], w[55], dp[55][55][55];
long long fast(long long x, long long b, long long res = 1) {
  while (b) {
    if (b & 1) res = res * x % 998244353;
    x = x * x % 998244353;
    b >>= 1;
  }
  return res;
}
int main() {
  cin.tie(0);
  ios_base::sync_with_stdio(0);
  int n, m;
  cin >> n >> m;
  long long sum = 0, s[2] = {0, 0};
  for (int i = 1; i <= n; i++) cin >> a[i];
  for (int i = 1; i <= n; i++) {
    cin >> w[i], sum += w[i];
    s[a[i]] += w[i];
  }
  for (int q = 1; q <= n; q++) {
    memset(dp, 0, sizeof(dp));
    dp[0][0][0] = 1;
    long long ans = 0;
    for (int i = 1; i <= m; i++) {
      for (int j = 0; j <= i; j++) {
        for (int k = 0; k <= j; k++) {
          long long tmp = (a[q] == 1 ? 1 : -1);
          long long meow = fast(sum + tmp * (2 * j - i - 1), 998244353 - 2);
          if (s[1 - a[q]] > 0 && s[1 - a[q]] - tmp * (i - j - 1) > 0 &&
              sum + tmp * (2 * j - i + 1) > 0) {
            dp[i][j][k] =
                (dp[i][j][k] +
                 dp[i - 1][j][k] * (s[1 - a[q]] - tmp * (i - j - 1)) %
                     998244353 *
                     fast(sum + tmp * (2 * j - i + 1), 998244353 - 2) %
                     998244353) %
                998244353;
          }
          if (s[a[q]] - w[q] > 0 && j > 0 &&
              s[a[q]] + tmp * (j - 1 - k) - w[q] > 0 &&
              sum + tmp * (2 * j - i - 1) > 0) {
            dp[i][j][k] =
                (dp[i][j][k] + dp[i - 1][j - 1][k] *
                                   (s[a[q]] + tmp * (j - 1 - k) - w[q]) %
                                   998244353 * meow) %
                998244353;
          }
          if (j > 0 && k > 0 && w[q] + tmp * (k - 1) > 0 &&
              sum + tmp * (2 * j - i - 1) > 0) {
            dp[i][j][k] =
                (dp[i][j][k] + dp[i - 1][j - 1][k - 1] *
                                   (w[q] + tmp * (k - 1)) % 998244353 * meow) %
                998244353;
          }
          if (i == m)
            ans =
                (ans + (w[q] + tmp * k) % 998244353 * dp[i][j][k] % 998244353) %
                998244353;
        }
      }
    }
    cout << ans << '\n';
  }
  return 0;
}
