#include <bits/stdc++.h>
using namespace std;
const int MOD = 998244353, inv100 = 828542813, N = 2e5 + 1;
int n, q;
long long p[N], t[4 * N], prod[N], iprod[N], sol[N];
bool is_check[N];
set<int> s1, s2;
long long inv(long long a) {
  int k = MOD - 2;
  long long b = 1;
  while (k > 0) {
    if (k % 2) b = b * a % MOD;
    a = a * a % MOD;
    k /= 2;
  }
  return b;
}
long long pr(int l, int r) {
  return (l == 0 ? prod[r] : prod[r] * iprod[l - 1] % MOD);
}
long long ipr(int l, int r) {
  return (l == 0 ? iprod[r] : iprod[r] * prod[l - 1] % MOD);
}
void build(int v, int l, int r) {
  if (l == r)
    t[v] = 1 + p[l];
  else {
    int k = (l + r) / 2;
    build(2 * v, l, k), build(2 * v + 1, k + 1, r);
    t[v] = t[2 * v + 1] - 1;
    if (t[v] < 0) t[v] += MOD;
    t[v] = t[v] * pr(l, k) % MOD;
    t[v] += t[2 * v];
    if (t[v] >= MOD) t[v] -= MOD;
  }
}
long long query(int v, int a, int b, int l, int r) {
  if (l > r) return 1;
  if (a == l && b == r) return t[v];
  int k = (a + b) / 2;
  if (r <= k) return query(2 * v, a, k, l, r);
  if (k + 1 <= l) return query(2 * v + 1, k + 1, b, l, r);
  long long x = query(2 * v + 1, k + 1, b, k + 1, r) - 1;
  if (x < 0) x += MOD;
  x = x * pr(l, k) % MOD;
  x += query(2 * v, a, k, l, k);
  if (x >= MOD) x -= MOD;
  return x;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cin >> n >> q;
  for (int i = 0; i < n; i++) {
    cin >> p[i];
    p[i] = p[i] * inv100 % MOD;
  }
  prod[0] = p[0];
  for (int i = 1; i < n; i++) prod[i] = p[i] * prod[i - 1] % MOD;
  iprod[n - 1] = inv(prod[n - 1]);
  for (int i = n - 2; 0 <= i; i--) iprod[i] = iprod[i + 1] * p[i + 1] % MOD;
  build(1, 0, n - 1);
  sol[0] = query(1, 0, n - 1, 0, n - 2) * inv(prod[n - 1]) % MOD;
  is_check[0] = true;
  s1.insert(0), s1.insert(-n);
  s2.insert(0);
  s2.insert(n);
  long long sum = sol[0];
  while (q--) {
    int u;
    cin >> u;
    u--;
    if (is_check[u]) {
      is_check[u] = false;
      s1.erase(-u);
      s2.erase(u);
      sum += MOD - sol[u];
      if (sum >= MOD) sum -= MOD;
      sol[u] = 0;
      int prv = -*s1.lower_bound(-u), nxt = *s2.lower_bound(u);
      sum += MOD - sol[prv];
      if (sum >= MOD) sum -= MOD;
      sol[prv] = 0;
      sol[prv] = query(1, 0, n - 1, prv, nxt - 2) * ipr(prv, nxt - 1) % MOD;
      sum += sol[prv];
      if (sum >= MOD) sum -= MOD;
    } else {
      is_check[u] = true;
      int prv = -*s1.lower_bound(-u), nxt = *s2.lower_bound(u);
      s1.insert(-u);
      s2.insert(u);
      sum += MOD - sol[prv];
      if (sum >= MOD) sum -= MOD;
      sol[prv] = query(1, 0, n - 1, prv, u - 2) * ipr(prv, u - 1) % MOD;
      sum += sol[prv];
      if (sum >= MOD) sum -= MOD;
      sol[u] = query(1, 0, n - 1, u, nxt - 2) * ipr(u, nxt - 1) % MOD;
      sum += sol[u];
      if (sum >= MOD) sum -= MOD;
    }
    cout << sum << "\n";
  }
  return 0;
}
