#include <bits/stdc++.h>
using namespace std;
const int MOD = 998244353;
const int maxn = 200100;
set<int> sset;
int p[maxn], f[maxn][20], g[maxn], h[maxn];
int llg[maxn];
int Inv(int a) {
  return a <= 1 ? 1 : 1ll * Inv(MOD % a) * (MOD - MOD / a) % MOD;
}
int query(int L, int R, int x = 0) {
  if (L == R) return x;
  int k = llg[R - L];
  x = (f[L][k] + 1ll * x * h[L + (1 << k) - 1] % MOD * g[L - 1] % MOD) % MOD;
  return query(L + (1 << k), R, x);
}
int main() {
  int n, q;
  scanf("%d%d", &n, &q);
  for (int i = 1; i <= n; ++i) scanf("%d", &p[i]);
  for (int i = 1; i <= n; ++i) p[i] = 1ll * p[i] * Inv(100) % MOD;
  for (int i = 1; i < maxn; ++i) llg[i] = i == 1 ? 0 : llg[i >> 1] + 1;
  for (int i = 0; i <= n; ++i) g[i] = i == 0 ? 1 : 1ll * p[i] * g[i - 1] % MOD;
  for (int i = 0; i <= n; ++i) h[i] = Inv(g[i]);
  for (int i = 1; i <= n; ++i) f[i][0] = Inv(p[i]);
  for (int k = 1; (1 << k) <= n; ++k)
    for (int i = 1; i + (1 << k) - 1 <= n; ++i) {
      int tmp = 1ll * f[i][k - 1] * Inv(g[i + (1 << k) - 1]) % MOD;
      tmp = 1ll * tmp * g[i + (1 << (k - 1)) - 1] % MOD;
      f[i][k] = (f[i + (1 << (k - 1))][k - 1] + tmp) % MOD;
    }
  sset.insert(1);
  sset.insert(n + 1);
  int ans = query(1, n + 1);
  for (int k = 1; k <= q; ++k) {
    int x;
    scanf("%d", &x);
    auto it = sset.lower_bound(x);
    if (*it == x) {
      sset.erase(x);
      it = sset.lower_bound(x);
      int R = *it;
      --it;
      int L = *it;
      ans = (ans - query(L, x) + MOD) % MOD;
      ans = (ans - query(x, R) + MOD) % MOD;
      ans = (ans + query(L, R)) % MOD;
    } else {
      int R = *it;
      --it;
      int L = *it;
      sset.insert(x);
      ans = (ans - query(L, R) + MOD) % MOD;
      ans = (ans + query(L, x)) % MOD;
      ans = (ans + query(x, R)) % MOD;
    }
    printf("%d\n", ans);
  }
  return 0;
}
