#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
const int mod = 998244353;
int n, Q;
long long p[N], R[101], S[N], rev[N];
bool flag[N];
set<int> ST;
set<int>::iterator it;
long long pow_mod(long long x, int p) {
  long long s = 1;
  while (p) {
    if (p & 1) s = s * x % mod;
    x = x * x % mod;
    p >>= 1;
  }
  return s;
}
long long query(int L, int R) {
  long long ret = (S[L] - S[R + 1] + mod) % mod;
  ret = ret * rev[R + 1] % mod;
  return ret;
}
int main() {
  R[0] = 1;
  for (int i = 1; i <= 100; i++) {
    R[i] = pow_mod(i, mod - 2);
  }
  scanf("%d %d", &n, &Q);
  for (int i = 1; i <= n; i++) {
    scanf("%d", p + i);
    flag[i] = 0;
    p[i] = 100 * R[p[i]] % mod;
  }
  S[n + 1] = 0;
  long long fac = 1;
  for (int i = n; i >= 1; i--) {
    fac = fac * p[i] % mod;
    S[i] = (S[i + 1] + fac) % mod;
  }
  rev[1] = pow_mod(fac, mod - 2);
  for (int i = 1; i <= n; i++) {
    rev[i + 1] = rev[i] * p[i] % mod;
  }
  ST.insert(1);
  flag[1] = 1;
  long long ans = query(1, n);
  int x, l, r;
  while (Q--) {
    scanf("%d", &x);
    it = ST.lower_bound(x);
    if (flag[x]) {
      it--;
      l = *it;
      it++;
      if (it == ST.end()) {
        r = n + 1;
      } else {
        it++;
        if (it == ST.end()) {
          r = n + 1;
        } else {
          r = *it;
        }
      }
      ans = ans - query(l, x - 1) - query(x, r - 1) + query(l, r - 1);
      ans = (ans % mod + mod) % mod;
      ST.erase(x);
    } else {
      it--;
      l = *it;
      it++;
      if (it == ST.end()) {
        r = n + 1;
      } else {
        r = *it;
      }
      ans = ans - query(l, r - 1) + query(l, x - 1) + query(x, r - 1);
      ans = (ans % mod + mod) % mod;
      ST.insert(x);
    }
    flag[x] ^= 1;
    printf("%I64d\n", ans);
  }
  return 0;
}
