#include <bits/stdc++.h>
using namespace std;
const long long N = 1e6, mod = 998244353;
long long big(long long b, long long p) {
  long long r = 1;
  while (p) {
    if (p & 1) r = (1LL * r * b) % mod;
    b = (1LL * b * b) % mod;
    p /= 2;
  }
  return r;
}
long long a[N + 2], ml[N + 2], sm[N + 2];
long long cal(long long i, long long j) {
  long long up =
      (1LL * (sm[j - 1] - sm[i - 1]) * big(ml[i - 1], mod - 2)) % mod + 1;
  long long dw = (1LL * ml[j] * big(ml[i - 1], mod - 2)) % mod;
  return (1LL * up * big(dw, mod - 2)) % mod;
}
long long bit[N + 2];
void upd(long long x, long long vl) {
  vl %= mod;
  for (; x <= N; x += x & -x) bit[x] = (bit[x] + vl) % mod;
}
void upd(long long l, long long r, long long vl) {
  upd(l, vl);
  upd(r + 1, -vl);
}
long long get(long long x) {
  long long ret = 0;
  for (; x > 0; x -= x & -x) ret = (ret + bit[x]) % mod;
  return ret;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  long long n, q;
  cin >> n >> q;
  ml[0] = 1;
  for (long long i = 1; i <= n; i++) {
    cin >> a[i];
    a[i] = (1LL * a[i] * big(100, mod - 2)) % mod;
    ml[i] = (1LL * ml[i - 1] * a[i]) % mod;
    sm[i] = (sm[i - 1] + ml[i]) % mod;
  }
  set<long long> st;
  st.insert(1);
  st.insert(n + 1);
  upd(1, 1, cal(1, n));
  while (q--) {
    long long x;
    cin >> x;
    if (st.find(x) == st.end()) {
      auto it = st.upper_bound(x);
      long long ex = get(*it);
      long long now = get(x);
      upd(x, x, -now);
      long long her = cal(x, *it - 1) + ex;
      upd(x, x, her);
      it--;
      upd(1, *it, -get(*it));
      upd(1, *it, cal(*it, x - 1) + her);
      st.insert(x);
    } else {
      auto it = st.upper_bound(x);
      long long rt = *it;
      long long ex = get(rt);
      it--;
      it--;
      upd(1, *it, -get(*it));
      long long now = cal(*it, rt - 1) + ex;
      upd(1, *it, now);
      long long dl = get(x);
      upd(x, x, -dl);
      st.erase(x);
    }
    cout << (get(1) + mod) % mod << '\n';
  }
  return 0;
}
