#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;
const int max_n = 200500;
const ll mod = 998244353;
ll t[max_n << 2], ti[max_n << 2], d = 1;
void relax(int v) {
  t[v] = (t[v] * ti[v]) % mod;
  if (v < d) {
    ti[v << 1] = (ti[v << 1] * ti[v]) % mod;
    ti[v << 1 | 1] = (ti[v << 1 | 1] * ti[v]) % mod;
  }
  ti[v] = 1;
}
void build(int n) {
  while (d < max_n) d <<= 1;
  for (int i = d; i < d + n; i++) {
    t[i] = 1;
    ti[i] = 1;
  }
  for (int i = d - 1; i >= 1; i--) {
    t[i] = t[i << 1] + t[i << 1 | 1];
    ti[i] = 1;
  }
}
void add(int l, int r, ll x, int tl = 0, int tr = d - 1, int v = 1) {
  relax(v);
  if (l == tl && r == tr) {
    ti[v] = (ti[v] * x) % mod;
    relax(v);
    return;
  }
  int tm = (tl + tr) >> 1;
  if (l <= tm) {
    add(l, min(r, tm), x, tl, tm, v << 1);
  }
  if (r > tm) {
    add(max(l, tm + 1), r, x, tm + 1, tr, v << 1 | 1);
  }
  relax(v);
  relax(v << 1);
  relax(v << 1 | 1);
  t[v] = (t[v << 1] + t[v << 1 | 1]) % mod;
}
ll get(int l, int r, int tl = 0, int tr = d - 1, int v = 1) {
  relax(v);
  if (l == tl && r == tr) {
    return t[v];
  }
  int tm = (tl + tr) / 2;
  ll ans = 0;
  if (l <= tm) {
    ans = (ans + get(l, min(r, tm), tl, tm, v << 1)) % mod;
  }
  if (r > tm) {
    ans = (ans + get(max(l, tm + 1), r, tm + 1, tr, v << 1 | 1)) % mod;
  }
  return ans;
}
ll fast_pow(ll a, int p) {
  if (p == 0) return 1;
  if (p == 1) return a % mod;
  ll b = fast_pow(a, p / 2);
  return ((b * b % mod) * (p % 2 == 1 ? a : 1)) % mod;
}
int main() {
  ios_base::sync_with_stdio(false);
  cout.tie(nullptr);
  cin.tie(nullptr);
  cout.precision(20);
  int n, q;
  cin >> n >> q;
  build(n);
  vector<bool> used(n);
  used[0] = 1;
  vector<ll> pref(n + 1, 1);
  for (int i = 0; i < n; i++) {
    ll p;
    cin >> p;
    ll cur = (100 * fast_pow(p, mod - 2)) % mod;
    if (i == 0) {
      add(i, i, cur);
    } else {
      add(0, i, cur);
    }
  }
  for (int i = 0; i < n; i++) {
    pref[i] = get(i, i);
  }
  set<int> checks;
  checks.insert(0);
  checks.insert(n);
  for (int i = 0; i < q; i++) {
    int x;
    cin >> x;
    x--;
    if (used[x]) {
      checks.erase(x);
    }
    auto uk = checks.lower_bound(x);
    auto nUk = uk, lUk = uk;
    while (*nUk < x) {
      nUk++;
    }
    while (*lUk > x) {
      lUk--;
    }
    int next = *nUk, last = *lUk;
    ll cur = pref[x] * fast_pow(pref[next], mod - 2) % mod;
    if (used[x]) {
      add(last, x - 1, cur);
    } else if (!used[x]) {
      add(last, x - 1, fast_pow(cur, mod - 2));
    }
    if (!used[x]) {
      checks.insert(x);
    }
    used[x] = !used[x];
    cout << get(0, n - 1) << "\n";
  }
}
