#include <bits/stdc++.h>
using namespace std;
const int MAXN = 100000;
const int INF = (long long)1e9 + 5;
const long long MOD = 998244353;
long long qpow(long long a, long long p) {
  long long res = 1;
  while (p) {
    if (p & 1) res = res * a % MOD;
    p >>= 1;
    a = a * a % MOD;
  }
  return res;
}
long long N, M, A, X;
long long mod_inv(long long x) { return qpow(x, MOD - 2); }
long long get_dp(long long len) {
  if (A == 1) return 1;
  long long apl = qpow(A, len);
  return (apl +
          X * qpow(A, len - 1) % MOD * (apl - 1) % MOD * mod_inv(A - 1) % MOD) %
         MOD;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cin >> N >> M >> A;
  long long pre = 0, ans = 1;
  X = A * (A - 1) / 2 % MOD;
  for (int i = 0; i < M; i++) {
    long long b;
    cin >> b;
    ans = ans * get_dp(b - pre) % MOD;
    pre = b;
  }
  cout << ans * qpow(A, N - pre * 2) % MOD << "\n";
  return 0;
}
