#include <bits/stdc++.h>
using namespace std;
int n, m, A, b[210000];
long long quick(long long a, long long b) {
  long long ret = 1;
  while (b) {
    if (b & 1) ret = ret * a % 998244353;
    a = a * a % 998244353;
    b >>= 1;
  }
  return ret;
}
int main() {
  int inv_2 = quick(2, 998244353 - 2);
  scanf("%d%d%d", &n, &m, &A);
  for (int i = 1; i <= m; i++) scanf("%d", &b[i]);
  int ans = 1;
  for (int i = 1; i <= m; i++) {
    int l = b[i] - b[i - 1];
    int sum = quick(A, 2 * l), s = quick(A, l);
    ans = 1ll * ans *
          ((1ll * (sum - s) % 998244353 * inv_2 % 998244353 + s) % 998244353) %
          998244353;
  }
  ans = ans * quick(A, n - 2 * b[m]) % 998244353;
  if (ans < 0) ans += 998244353;
  cout << ans;
  return 0;
}
