#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 7, p = 998244353;
bool fl[N];
long long n, ans, f[N], w[N], q[N], c[N], d[N];
set<int> ft;
inline long long pows(long long u, int v) {
  long long ans = 1;
  while (v > 0) {
    if (v & 1) ans = ans * u % p;
    u = u * u % p, v = v >> 1;
  }
  return ans;
}
inline int read() {
  int num = 0;
  char g = getchar();
  while (g < 48 || 57 < g) g = getchar();
  while (47 < g && g < 58)
    num = (num << 1) + (num << 3) + g - 48, g = getchar();
  return num;
}
struct matrixs {
  long long ch[2][2];
} t, k, fs[N << 2];
inline matrixs mul(matrixs a, matrixs b) {
  matrixs c = t;
  for (int i = 0; i <= 1; i++)
    for (int j = 0; j <= 1; j++)
      for (int k = 0; k <= 1; k++)
        c.ch[i][k] = (c.ch[i][k] + a.ch[i][j] * b.ch[j][k]) % p;
  return c;
}
inline void build(int l, int r, int t) {
  if (l == r) {
    fs[t].ch[0][0] = f[l], fs[t].ch[1][0] = 1, fs[t].ch[1][1] = 1;
    return;
  }
  int d = (l + r) >> 1;
  build(l, d, t << 1), build(d + 1, r, t << 1 | 1);
  fs[t] = mul(fs[t << 1], fs[t << 1 | 1]);
}
inline void search(int l, int r, int t, int ql, int qr) {
  if (l == ql && r == qr) {
    k = mul(k, fs[t]);
    return;
  }
  int d = (l + r) >> 1;
  if (ql <= d) search(l, d, t << 1, ql, min(qr, d));
  if (d + 1 <= qr) search(d + 1, r, t << 1 | 1, max(ql, d + 1), qr);
}
inline long long query(int l, int r) {
  long long xt = pows(c[l - 1], p - 2),
            xq = ((q[r - 1] - q[l - 1] + p) % p * xt) % p;
  xq = (1 - xq + p) % p;
  long long xf = (d[r - 1] - d[l - 1] + p) % p * xt % p;
  return xf * pows(xq, p - 2) % p;
}
int main() {
  n = read();
  c[0] = 1;
  int m = read();
  for (int i = 1; i <= n; i++) f[i] = read() * pows(100, p - 2) % p;
  build(1, n, 1);
  for (int i = 1; i <= n; i++) {
    c[i] = c[i - 1] * f[i] % p;
    ans = (ans + pows(f[i], p - 2)) % p;
    d[i] = (d[i - 1] + c[i - 1]) % p;
    long long wf = c[i - 1] * (1 - f[i] + p) % p;
    q[i] = (q[i - 1] + wf) % p, w[i] = (w[i - 1] + wf * i) % p;
    if (i == 1) ft.insert(i), fl[i] = 1;
  }
  ans = query(1, n + 1);
  ft.insert(n + 1);
  for (int i = 1; i <= m; i++) {
    int x = read();
    if (fl[x]) {
      int l = (*--ft.find(x)), r = (*++ft.find(x));
      ans = ans + query(l, r) - query(l, x) - query(x, r);
      ft.erase(x);
    } else {
      ft.insert(x);
      int l = (*--ft.find(x)), r = (*++ft.find(x));
      ans = ans - query(l, r) + query(l, x) + query(x, r);
    }
    ans = (ans % p + p) % p;
    fl[x] ^= 1;
    printf("%d\n", ans);
  }
  return 0;
}
