#include <bits/stdc++.h>
using namespace std;
const int MAXN = 4e5 + 10, INF = ~(1 << 31), MOD = 1e9 + 7, mod = 998244353;
const int MAXM = 5e6 + 10;
const long long llINF = ~(1ll << 63);
const double Pi = acos(-1.0);
long long p[MAXN], inv[MAXN], a[MAXN], pre[MAXN];
long long mul(long long a, long long b) {
  a %= mod;
  b %= mod;
  return (a * b % mod + mod) % mod;
}
long long add(long long a, long long b) {
  a %= mod;
  b %= mod;
  return (a + b) % mod;
}
long long query(int l, int r) { return mul(add(pre[l], mod - pre[r]), inv[r]); }
long long ksm(long long x) {
  long long v = mod - 2;
  long long ans = 1;
  while (v) {
    if (v & 1) (ans *= x) %= mod;
    (x *= x) %= mod;
    v >>= 1;
  }
  return ans;
}
int n, q, vis[MAXN];
int main() {
  scanf("%d%d", &n, &q);
  for (int i = 1; i <= n; i++) {
    int tmp;
    scanf("%d", &tmp);
    a[i] = mul(100, ksm(tmp));
  }
  p[n + 1] = 1;
  pre[n + 1] = 0;
  for (int i = n; i; i--) {
    p[i] = mul(p[i + 1], a[i]);
    pre[i] = add(pre[i + 1], p[i]);
  }
  inv[n + 1] = 1;
  for (int i = 1; i <= n; i++) inv[i] = ksm(p[i]);
  set<int> s;
  long long ans = pre[1];
  s.insert(1);
  s.insert(n + 1);
  while (q--) {
    int tmp;
    scanf("%d", &tmp);
    if (vis[tmp]) {
      vis[tmp] = 0;
      auto it1 = s.find(tmp);
      it1--;
      auto it2 = s.find(tmp);
      it2++;
      ans = add(ans, query(*it1, *it2));
      ans = add(ans, mod - query(*it1, tmp));
      ans = add(ans, mod - query(tmp, *it2));
      s.erase(tmp);
    } else {
      vis[tmp] = 1;
      auto it1 = s.lower_bound(tmp);
      auto it2 = it1;
      it1--;
      ans = add(ans, mod - query(*it1, *it2));
      ans = add(ans, query(*it1, tmp));
      ans = add(ans, query(tmp, *it2));
      s.insert(tmp);
    }
    printf("%lld\n", ans);
  }
  return 0;
}
