#include <bits/stdc++.h>
using namespace std;
const long long PP = 998244353;
const int MAXN = 2e5 + 10;
int n, m, A, i, j, b[MAXN];
long long ans, t, p, x, f[10000];
long long ex(long long x, int y) {
  long long i = 0;
  while (y) {
    if (y & 1) x = (x * f[i]) % PP;
    y = y >> 1;
    i++;
  }
  return x;
}
int main() {
  cin >> n >> m >> A;
  for (i = 1; i <= m; i++) cin >> b[i];
  A = A % PP;
  f[0] = A % PP;
  b[0] = 0;
  for (i = 1; i <= 100; i++) f[i] = (f[i - 1] * f[i - 1]) % PP;
  ans = 1;
  t = 1;
  for (i = 1; i <= m; i++) {
    t = ex(1, b[i] - b[i - 1]);
    t = (t * (t + 1) / 2) % PP;
    ans = (ans * t) % PP;
  }
  ans = ex(ans, n - 2 * b[m]);
  cout << ans;
  return 0;
}
