Creatnx has n mirrors, numbered from 1 to n. Every day, Creatnx asks exactly one mirror "Am I beautiful?". The i-th mirror will tell Creatnx that he is beautiful with probability (p_i)/(100) for all 1 ≤ i ≤ n.

Creatnx asks the mirrors one by one, starting from the 1-st mirror. Every day, if he asks i-th mirror, there are two possibilities:

  * The i-th mirror tells Creatnx that he is beautiful. In this case, if i = n Creatnx will stop and become happy, otherwise he will continue asking the i+1-th mirror next day; 
  * In the other case, Creatnx will feel upset. The next day, Creatnx will start asking from the 1-st mirror again. 



You need to calculate [the expected number](https://en.wikipedia.org/wiki/Expected_value) of days until Creatnx becomes happy.

This number should be found by modulo 998244353. Formally, let M = 998244353. It can be shown that the answer can be expressed as an irreducible fraction p/q, where p and q are integers and q not ≡ 0 \pmod{M}. Output the integer equal to p ⋅ q^{-1} mod M. In other words, output such an integer x that 0 ≤ x < M and x ⋅ q ≡ p \pmod{M}.

Input

The first line contains one integer n (1≤ n≤ 2⋅ 10^5) — the number of mirrors.

The second line contains n integers p_1, p_2, …, p_n (1 ≤ p_i ≤ 100).

Output

Print the answer modulo 998244353 in a single line.

Examples

Input


1
50


Output


2


Input


3
10 20 50


Output


112

Note

In the first test, there is only one mirror and it tells, that Creatnx is beautiful with probability 1/2. So, the expected number of days until Creatnx becomes happy is 2.
#include <bits/stdc++.h>
template <class T>
inline bool cmax(T &a, const T &b) {
  return a < b ? a = b, 1 : 0;
}
template <class T>
inline bool cmin(T &a, const T &b) {
  return a > b ? a = b, 1 : 0;
}
namespace IO {
char ss[1 << 17], *_A = ss, *_B = ss;
template <class T>
inline void In(T &x) {
  char c;
  T y = 1;
  while (
      c = (_A == _B && (_B = (_A = ss) + fread(ss, 1, 1 << 17, stdin), _A == _B)
               ? -1
               : *_A++),
      !isdigit(c))
    if (c == 45) {
      y = -1;
    }
  x = c - 48;
  while (
      c = (_A == _B && (_B = (_A = ss) + fread(ss, 1, 1 << 17, stdin), _A == _B)
               ? -1
               : *_A++),
      isdigit(c)) {
    x = x * 10 + c - 48;
  }
  x *= y;
}
template <class T, class... _T>
inline void In(T &x, _T &...y) {
  return In(x), In(y...);
}
template <class T>
inline void In(T *a, int Len) {
  for (register int i = 0, I = Len - 1 + 1; i < I; ++i) In(*(a + i));
}
char sr[1 << 21], _z[20], *_C = sr, *_D = sr + (1 << 21) - 1;
int _Z;
inline void flush() { fwrite(sr, 1, _C - sr, stdout), _C = sr; }
inline void pc(char c) {
  *_C++ = c;
  if (*_C == *_D) flush();
}
template <class T>
inline void Out(T x, char c = ' ') {
  if (x < 0) pc(45), x = -x;
  while (_z[++_Z] = x % 10 + 48, x /= 10)
    ;
  while (pc(_z[_Z]), --_Z) {
  };
  pc(c);
}
template <class T, class... _T>
inline void Out(T &x, _T &...y) {
  return Out(x), Out(y...);
}
template <class T>
inline void Out(T *a, int Len) {
  for (register int i = 0, I = Len - 1 + 1; i < I; ++i) Out(*(a + i));
  pc('\n');
}
struct _Flush {
  ~_Flush() { flush(); }
} flusher;
}  // namespace IO
using namespace std;
using namespace IO;
const int N = 2e5 + 5, Inf = -1u >> 1, Mod = 998244353;
using ll = long long;
using arr = int[N];
int n, E;
inline int fpm(int a, int b) {
  int x = 1;
  for (; b; b >>= 1, a = (ll)a * a % Mod)
    if (b & 1) x = (ll)x * a % Mod;
  return x;
}
inline int Inv(int x) { return fpm(x, Mod - 2); }
inline void Sol() {
  int x, p = 1, Inv100 = Inv(100);
  In(n);
  E = 0;
  for (register int i = 1, I = n + 1; i < I; ++i) {
    E = (E + p) % Mod;
    In(x);
    p = (ll)x * Inv100 % Mod * p % Mod;
  }
  E = (ll)E * Inv(p) % Mod;
  Out(E);
}
int main() {
  int T = 1;
  while (T--) Sol();
  return 0;
}
