#include <bits/stdc++.h>
using namespace std;
long long n, m, A;
long long b[200005];
long long beki[200005];
long long pow(long long a, long long n) {
  if (n == 0) return 1;
  if (n % 2) {
    return ((a % 998244353) * (pow(a, n - 1) % 998244353)) % 998244353;
  } else {
    return pow((a * a) % 998244353, n / 2) % 998244353;
  }
}
int main(void) {
  cin >> n >> m >> A;
  for (int i = 1; i <= m; i++) cin >> b[i];
  long long inv2 = pow(2, 998244353 - 2);
  long long ans = 1;
  for (int i = 1; i <= m; i++) {
    long long l = b[i] - b[i - 1];
    long long tmp = (pow(A, 2 * l) + 998244353 - pow(A, l)) % 998244353;
    tmp *= inv2, tmp %= 998244353;
    tmp += pow(A, l), tmp %= 998244353;
    ans *= tmp, ans %= 998244353;
  }
  ans *= pow(A, n - 2 * b[m]), ans %= 998244353;
  cout << ans << endl;
  return 0;
}
