#include <bits/stdc++.h>
using namespace std;
const int inf = 1e9, mod = 998244353;
int n, m, sl, fh, ans, p[1000010], Ans[1000010];
set<int> st;
struct Matrix {
  int s[2][2];
  void init() { s[0][0] = s[0][1] = s[1][0] = s[1][1] = 0; }
} W, tr[1000010];
void upd(int &x, int y, int z) {
  x = y + z;
  if (x >= mod) x -= mod;
}
inline Matrix operator*(const Matrix &a, const Matrix &b) {
  static Matrix c;
  c.s[0][0] = (1ll * a.s[0][0] * b.s[0][0] + 1ll * a.s[0][1] * b.s[1][0]) % mod;
  c.s[0][1] = (1ll * a.s[0][0] * b.s[0][1] + 1ll * a.s[0][1] * b.s[1][1]) % mod;
  c.s[1][0] = (1ll * a.s[1][0] * b.s[0][0] + 1ll * a.s[1][1] * b.s[1][0]) % mod;
  c.s[1][1] = (1ll * a.s[1][0] * b.s[0][1] + 1ll * a.s[1][1] * b.s[1][1]) % mod;
  return c;
}
inline Matrix operator+(const Matrix &a, const Matrix &b) {
  static Matrix c;
  upd(c.s[0][0], a.s[0][0], b.s[0][0]);
  upd(c.s[0][1], a.s[0][1], b.s[0][1]);
  upd(c.s[1][0], a.s[1][0], b.s[1][0]);
  upd(c.s[1][1], a.s[1][1], b.s[1][1]);
  return c;
}
int rd() {
  sl = 0;
  fh = 1;
  char ch = getchar();
  while (ch < '0' || '9' < ch) {
    if (ch == '-') fh = -1;
    ch = getchar();
  }
  while ('0' <= ch && ch <= '9') sl = sl * 10 + ch - '0', ch = getchar();
  return sl * fh;
}
int _pow(int k, int i) {
  int t = 1;
  for (; i; i >>= 1, k = 1ll * k * k % mod)
    if (i & 1) t = 1ll * t * k % mod;
  return t;
}
void build(int x, int l, int r) {
  if (l == r) {
    tr[x].s[0][0] = tr[x].s[1][0] = _pow(p[l], mod - 2);
    tr[x].s[1][1] = 1;
    return;
  }
  build(x << 1, l, ((l + r) >> 1));
  build(x << 1 | 1, ((l + r) >> 1) + 1, r);
  tr[x] = tr[x << 1] * tr[x << 1 | 1];
}
void query(int x, int l, int r, int L, int R) {
  if (L <= l && r <= R) {
    W = W * tr[x];
    return;
  }
  if (L <= ((l + r) >> 1)) query(x << 1, l, ((l + r) >> 1), L, R);
  if (R > ((l + r) >> 1)) query(x << 1 | 1, ((l + r) >> 1) + 1, r, L, R);
}
int query(int l, int r) {
  W.init();
  W.s[0][1] = 1;
  query(1, 1, n, l, r - 1);
  return Ans[l] = W.s[0][0];
}
int main() {
  n = rd();
  m = rd();
  int inv100 = _pow(100, mod - 2);
  for (int i = 1; i <= n; ++i) p[i] = 1ll * rd() * inv100 % mod;
  build(1, 1, n);
  st.insert(1);
  st.insert(n + 1);
  set<int>::iterator pre, nxt;
  ans = query(1, n + 1);
  for (int x; m; --m) {
    x = rd();
    if (!st.count(x)) {
      st.insert(x);
      pre = nxt = st.lower_bound(x);
      --pre;
      ++nxt;
      ans -= Ans[*pre];
      if (ans < 0) ans += mod;
      ans = (0ll + ans + query(*pre, x) + query(x, *nxt)) % mod;
    } else {
      pre = nxt = st.lower_bound(x);
      --pre;
      ++nxt;
      ans = (0ll + ans - Ans[*pre] - Ans[x]) % mod;
      if (ans < 0) ans += mod;
      ans = (ans + query(*pre, *nxt)) % mod;
      st.erase(x);
    }
    printf("%d\n", ans);
  }
  return 0;
}
