#include <bits/stdc++.h>
using namespace std;
const int mod = 998244353;
const int INF = (int)1e9;
const long long INFF = (long long)1e18;
const int MXN = (int)1e6 + 7;
int a[MXN];
long long val[MXN], re[MXN];
long long rsum[MXN], re_val[MXN];
inline long long mul(long long v1, long long v2) { return v1 * v2 % mod; }
inline long long add(long long v1, long long v2) {
  v1 += v2;
  if (v1 >= mod) v1 -= mod;
  if (v1 < 0) v1 += mod;
  return v1;
}
long long qy(int l, int r) {
  long long res = add(rsum[l], -rsum[r + 1]);
  return mul(res, re_val[r + 1]);
}
long long mypow(long long v, long long t) {
  long long res = 1;
  while (t) {
    if (t & 1) res = res * v % mod;
    v = v * v % mod;
    t >>= 1;
  }
  return res;
}
int main() {
  int n, q;
  scanf("%d %d", &n, &q);
  for (int i = 1; i <= 100; i++) re[i] = mypow(i, mod - 2);
  for (int i = 1; i <= n; i++) scanf("%d", a + i);
  val[n + 1] = 1;
  for (int i = n; i >= 1; i--) {
    val[i] = mul(val[i + 1], mul(re[a[i]], 100));
    rsum[i] = add(rsum[i + 1], val[i]);
  }
  for (int i = n + 1; i >= 1; i--) {
    re_val[i] = mypow(val[i], mod - 2);
  }
  long long ans = qy(1, n);
  set<int> st;
  st.insert(1);
  st.insert(n + 1);
  while (q--) {
    int pos;
    scanf("%d", &pos);
    if (st.find(pos) == st.end()) {
      auto itr = st.lower_bound(pos);
      auto itl = itr;
      itl--;
      int l = *itl, r = *itr;
      ans = add(ans, -qy(l, r - 1));
      ans = add(ans, qy(l, pos - 1));
      ans = add(ans, qy(pos, r - 1));
      st.insert(pos);
    } else {
      auto itr = st.lower_bound(pos);
      auto itl = itr;
      itl--;
      auto itrr = itr;
      itrr++;
      int rr = *itrr;
      int l = *itl, r = pos;
      ans = add(ans, -qy(l, r - 1));
      ans = add(ans, -qy(r, rr - 1));
      ans = add(ans, qy(l, rr - 1));
      st.erase(pos);
    }
    printf("%lld\n", ans);
  }
  return 0;
}
