#include <bits/stdc++.h>
using namespace std;
long long mult(long long a, long long b, long long p = 1000000007) {
  long long ans = a;
  ans *= b;
  return ((ans >= p) ? ans % p : ans);
}
long long add(long long a, long long b, long long p = 1000000007) {
  long long ans = a + b;
  return ((ans >= p) ? ans - p : ans);
}
long long fpow(long long n, long long k, long long p = 1000000007) {
  long long r = 1;
  for (; k; k >>= 1) {
    if (k & 1) r = r * n % p;
    n = n * n % p;
  }
  return r;
}
long long inv(long long a, long long p = 1000000007) {
  return fpow(a, p - 2, p);
}
const int N = 200 * 1000 + 13;
const int mod = 998244353;
int n, m, A;
int b[N];
int cnt(int x) {
  int base = fpow(A, x, mod);
  return mult(add(mult(base, base, mod), base, mod), fpow(2, mod - 2, mod),
              mod);
}
int main() {
  scanf("%d%d%d", &n, &m, &A);
  for (int i = 0; i < int(m); i++) scanf("%d", &b[i]);
  int ans = fpow(A, n - b[m - 1] * 2, mod);
  ans = mult(ans, cnt(b[0]), mod);
  for (int i = 0; i < int(m - 1); i++)
    ans = mult(ans, cnt(b[i + 1] - b[i]), mod);
  printf("%d\n", ans);
  return 0;
}
