#include <bits/stdc++.h>
using namespace std;
long long lh[100005];
long long w[100005];
long long n, M;
long long sumw = 0, suml = 0, sumh = 0;
long long dp[55][55][55];
long long md = 998244353;
long long modInverse(long long a, long long m) {
  if (a == 0) return 0;
  long long m0 = m;
  long long y = 0, x = 1;
  if (m == 1) return 0;
  while (a > 1) {
    long long q = a / m;
    long long t = m;
    m = a % m, a = t;
    t = y;
    y = x - q * y;
    x = t;
  }
  if (x < 0) x = (m0 + x % m0);
  return x;
}
long long d(int i, int j, int k, int l) {
  long long o = (M + (md - (i + k) % md) % md) % md;
  if (dp[i][j][k] != -1) return dp[i][j][k];
  if (i == 0) return dp[i][j][k] = 0;
  if (lh[l]) {
    long long p =
        (((w[l] + j) % md) *
         modInverse(((sumw + (k + (md - o) % md) % md) % md) % md, md)) %
        md;
    long long p2 =
        (((suml + (k + (md - (w[l] + j) % md) % md) % md) % md) *
         modInverse(
             (sumw + (k + (md - (o + ((w[l] + j) % md) % md) % md) % md) % md) %
                 md,
             md)) %
        md;
    long long x = (1 + (md - p) % md) % md;
    long long xx = (x * (1 + (md - p2) % md) % md) % md;
    return dp[i][j][k] = ((((d(i - 1, j + 1, k + 1, l) + 1) % md) * p) % md +
                          ((((d(i - 1, j, k + 1, l) * x) % md) * p2) % md +
                           ((d(i - 1, j, k, l) * xx) % md) % md) %
                              md) %
                         md;
  } else {
    long long p = (((w[l] + (md - j) % md) % md) *
                   modInverse((sumw + (k + (md - o) % md) % md) % md, md)) %
                  md;
    long long p2 =
        (((sumh + md - (o + (w[l] + md - j) % md) % md) % md) *
         modInverse(
             (sumw + (k + md - (o + (w[l] + md - j) % md) % md) % md) % md,
             md)) %
        md;
    long long x = (1 + (md - p) % md) % md;
    long long xx = (x * (1 + (md - p2) % md) % md) % md;
    return dp[i][j][k] =
               ((((d(i - 1, j + 1, k, l) + (md - 1) % md) % md) * p) % md +
                ((((d(i - 1, j, k, l) * x) % md) * p2) % md +
                 ((d(i - 1, j, k + 1, l) * xx) % md) % md) %
                    md) %
               md;
  }
}
int main(int argc, char* argv[]) {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  cin >> n >> M;
  for (int i = 0; i < n; i++) {
    cin >> lh[i];
  }
  for (int i = 0; i < n; i++) {
    cin >> w[i];
    sumw = (sumw + w[i]) % md;
    if (lh[i])
      suml = (suml + w[i]) % md;
    else
      sumh = (sumh + w[i]) % md;
  }
  for (int l = 0; l < n; l++) {
    for (int i = 0; i < 55; i++) {
      for (int j = 0; j < 55; j++) {
        for (int k = 0; k < 55; k++) {
          dp[i][j][k] = -1;
        }
      }
    }
    cout << (w[l] + d(M, 0, 0, l)) % md << endl;
  }
  return 0;
}
