#include <bits/stdc++.h>
using namespace std;
using LL = long long;
const int MOD = 998244353;
LL bin(LL a, LL b, LL p) {
  LL res = 1;
  for (; b; b >>= 1, a = a * a % p)
    if (b & 1) res = res * a % p;
  return res;
}
int n, q;
const int N = 2e5 + 5;
set<int> S;
LL steps[N], p[N], a[N];
bool on[N];
LL pre[N], invp[N];
inline LL getlr(int l, int r, LL pre[], LL invp[]) {
  return pre[r] * invp[l - 1] % MOD;
}
inline pair<int, int> getneighbour(int u) {
  return make_pair(*(--S.lower_bound(u)), *S.upper_bound(u));
}
struct segT {
  LL dat[N << 2];
  LL lazy[N << 2];
  int nn;
  inline void pu(int rt) { dat[rt] = (dat[rt << 1] + dat[rt << 1 | 1]) % MOD; }
  inline void pd(int rt) {
    if (lazy[rt] != 1) {
      int ls = rt << 1, rs = rt << 1 | 1;
      dat[ls] = (dat[ls] * lazy[rt]) % MOD;
      dat[rs] = (dat[rs] * lazy[rt]) % MOD;
      lazy[ls] = (lazy[ls] * lazy[rt]) % MOD;
      lazy[rs] = (lazy[rs] * lazy[rt]) % MOD;
      lazy[rt] = 1;
    }
  }
  void init(int n, LL a[]) {
    nn = 1;
    while (nn < n) nn <<= 1;
    for (int i = 1; i <= 2 * nn; ++i) {
      lazy[i] = 1;
      dat[i] = 0;
    }
    for (int i = 1; i <= n; ++i) {
      dat[i + nn - 1] = a[i];
    }
    for (int i = nn - 1; i >= 1; --i) pu(i);
  }
  int L, R;
  void u(int l, int r, int rt, LL v) {
    if (L <= l && r <= R) {
      dat[rt] = (dat[rt] * v) % MOD;
      lazy[rt] = (lazy[rt] * v) % MOD;
      return;
    }
    pd(rt);
    int m = (l + r) >> 1;
    if (L <= m) u(l, m, rt << 1, v);
    if (m + 1 <= R) u(m + 1, r, rt << 1 | 1, v);
    pu(rt);
  }
  LL q(int l, int r, int rt) {
    if (L <= l && r <= R) return dat[rt];
    pd(rt);
    int m = (l + r) >> 1;
    LL sum = 0;
    if (L <= m) sum = (sum + q(l, m, rt << 1)) % MOD;
    if (m + 1 <= R) sum = (sum + q(m + 1, r, rt << 1 | 1)) % MOD;
    pu(rt);
    return sum;
  }
  inline LL q(int l, int r) {
    L = l;
    R = r;
    return q(1, nn, 1);
  }
  inline void u(int l, int r, LL v) {
    L = l;
    R = r;
    u(1, nn, 1, v);
  }
} seg;
int main(int argc, char const *argv[]) {
  scanf("%d%d", &n, &q);
  for (int i = 1; i <= n; ++i) {
    scanf("%lld", &p[i]);
    steps[i] = 100LL * bin(p[i], MOD - 2, MOD) % MOD;
  }
  pre[0] = invp[0] = 1;
  for (int i = 1; i <= n; ++i) {
    pre[i] = pre[i - 1] * steps[i] % MOD;
    invp[i] = bin(pre[i], MOD - 2, MOD);
  }
  for (int i = 1; i <= n; ++i) a[i] = pre[n] * invp[i - 1] % MOD;
  seg.init(n, a);
  S.insert(1);
  S.insert(n + 1);
  for (int kk = 0; kk < q; ++kk) {
    int x;
    scanf("%d", &x);
    if (on[x]) {
      S.erase(x);
      pair<int, int> nei = getneighbour(x);
      LL c = getlr(x, nei.second - 1, pre, invp);
      seg.u(nei.first, x - 1, c);
      printf("%lld\n", seg.q(1, n));
    } else {
      pair<int, int> nei = getneighbour(x);
      LL c = getlr(x, nei.second - 1, invp, pre);
      seg.u(nei.first, x - 1, c);
      printf("%lld\n", seg.q(1, n));
      S.insert(x);
    }
    on[x] = 1 - on[x];
  }
  return 0;
}
