#include <bits/stdc++.h>
using namespace std;
inline int read() {
  int p = 0, w = 1;
  char c = getchar();
  while (c > '9' || c < '0') {
    if (c == '-') w = -1;
    c = getchar();
  }
  while (c >= '0' && c <= '9') p = p * 10 + c - '0', c = getchar();
  return p * w;
}
const int sid = 105;
const int mod = 998244353;
const int g = 3;
inline int mul(int a, int b) { return 1ll * a * b % mod; }
inline int fp(int a, int k) {
  int ret = 1;
  for (; k; k >>= 1, a = mul(a, a))
    if (k & 1) ret = mul(ret, a);
  return ret;
}
int n, m, k, b[sid];
struct mtx {
  int f[sid][sid];
  mtx() {}
  mtx(int flag) {
    if (flag == 0) {
      for (int i = 0; i < k; i++)
        for (int j = 0; j < k; j++) f[i][j] = 0;
    }
    if (flag == 1) {
      for (int i = 0; i < k; i++)
        for (int j = 0; j < k; j++) f[i][j] = (i == j) ? 1 : 0;
    }
  }
  int *operator[](const int x) { return f[x]; }
  friend mtx operator*(mtx a, mtx b) {
    mtx c(0);
    for (int i = 0; i < k; i++)
      for (int j = 0; j < k; j++)
        for (int p = 0; p < k; p++)
          c[i][j] = (c[i][j] + 1ll * a[i][p] * b[p][j] % (mod - 1)) % (mod - 1);
    return c;
  }
} A, B;
inline mtx fp(mtx a, int k) {
  mtx ret(1);
  for (; k; k >>= 1, a = a * a)
    if (k & 1) ret = ret * a;
  return ret;
}
map<int, int> H;
inline int BSGS(int A, int B) {
  H.clear();
  H[1] = 0;
  int Ai = 1, Aj = 1, m = ceil(sqrt(mod));
  for (register int i = 1; i < m; i++)
    Ai = 1ll * Ai * A % mod, H[1ll * Ai * B % mod] = i;
  Ai = 1ll * Ai * A % mod;
  for (register int i = 1; i <= m; i++) {
    Aj = 1ll * Aj * Ai % mod;
    if (H[Aj]) return 1ll * i * m - H[Aj];
  }
}
inline int gcd(int a, int b) { return b ? gcd(b, a % b) : a; }
inline void exgcd(int &x, int &y, int a, int b) {
  if (!b) {
    x = 1;
    y = 0;
    return;
  }
  exgcd(y, x, b, a % b);
  y -= a / b * x;
}
inline void Solve() {
  A[0][k - 1] = 1;
  for (register int i = 0; i <= k - 1; i++) B[i][k - 1] = b[k - i];
  for (register int i = 0; i <= k - 2; i++) B[i + 1][i] = 1;
  A = A * fp(B, n - k);
  int p = A[0][k - 1], t = BSGS(g, m);
  if (t % gcd(p, mod - 1))
    printf("-1\n");
  else {
    int gd = gcd(p, mod - 1);
    int x, y, a = p, b = mod - 1;
    t /= gd;
    a /= gd;
    b /= gd;
    exgcd(x, y, a, b);
    x = (x + mod - 1) % (mod - 1);
    x = 1ll * x * t % (mod - 1);
    printf("%d\n", fp(g, x));
  }
}
int main() {
  k = read();
  for (register int i = 1; i <= k; i++) b[i] = read();
  n = read();
  m = read();
  Solve();
  return 0;
}
