#include <bits/stdc++.h>
namespace TNT {
const int mod = 998244353;
const int MAXN = 110;
int k, n, m;
inline int read() {
  int x = 0;
  char ch = getchar();
  while (ch < '0' || ch > '9') ch = getchar();
  while (ch >= '0' && ch <= '9') {
    x = x * 10 + ch - '0';
    ch = getchar();
  }
  return x;
}
struct array {
  int ar[MAXN][MAXN];
  int x, y;
} a, asum, s;
array operator*(array x, array y) {
  array c;
  c.x = x.x;
  c.y = y.y;
  for (register int i = 1; i <= x.x; i++)
    for (register int j = 1; j <= y.y; j++) {
      c.ar[i][j] = 0;
      for (register int z = 1; z <= x.y; z++)
        c.ar[i][j] = 1ll * (1ll * c.ar[i][j] + 1ll * x.ar[i][z] * y.ar[z][j]) %
                     (mod - 1);
    }
  return c;
}
inline array qpow(array x, int y) {
  array ans = x;
  y--;
  while (y) {
    if (y & 1) ans = ans * x;
    x = x * x;
    y >>= 1;
  }
  return ans;
}
inline int power(int x, int y) {
  int ans = 1;
  while (y) {
    if (y & 1) ans = 1ll * ans * x % mod;
    x = 1ll * x * x % mod;
    y >>= 1;
  }
  return ans;
}
int exgcd(int a, int b, long long &x, long long &y) {
  if (!b) {
    x = 1, y = 0;
    return a;
  }
  int d = exgcd(b, a % b, x, y);
  int g = x;
  x = y;
  y = g - a / b * y;
  return d;
}
std::map<int, int> hs;
inline int BSGS(int G) {
  m %= mod;
  int t = sqrt(mod) + 1, tmp = m % mod;
  hs[tmp] = 0;
  for (int i = 1; i < t; i++) {
    tmp = 1ll * tmp * G % mod;
    hs[tmp] = i;
  }
  G = power(G, t);
  if (!G) {
    if (!m)
      return 1;
    else
      return -1;
  }
  tmp = 1;
  if (hs.find(tmp) != hs.end()) return 0;
  for (int i = 1; i <= t; i++) {
    tmp = 1ll * tmp * G % mod;
    if (hs.find(tmp) != hs.end()) return i * t - hs[tmp];
  }
  return -1;
}
inline void main() {
  k = read();
  s.x = 1;
  a.x = a.y = s.y = k;
  s.ar[1][k] = 1;
  for (register int i = 2; i <= k; i++) a.ar[i][i - 1] = 1;
  for (register int i = k; i >= 1; i--) a.ar[i][k] = read();
  n = read(), m = read();
  asum = s * qpow(a, n - k);
  int t = BSGS(3);
  long long x, y;
  int d = exgcd(asum.ar[1][k], mod - 1, x, y);
  if (t % d)
    puts("-1");
  else {
    x = (t / d * x % (mod - 1) + mod - 1) % (mod - 1);
    printf("%d\n", power(3, x));
  }
  return;
}
}  // namespace TNT
int main() {
  TNT::main();
  return 0;
}
