#include <bits/stdc++.h>
using namespace std;
const int MOD = 998244353;
long long mypow(long long a, long long b) {
  long long ans = 1;
  for (; b; b >>= 1) {
    if (b & 1) (ans *= a) %= MOD;
    (a *= a) %= MOD;
  }
  return ans;
}
long long n, m, A;
const int maxn = 2e5 + 100;
int a[maxn];
long long dp[maxn];
int x;
int main() {
  cin >> n >> m >> A;
  long long invA = mypow(A, MOD - 2);
  long long ans = mypow(A, n);
  dp[0] = mypow(A, n);
  a[0] = 0;
  for (int i = 1; i <= m; i++) {
    scanf("%d", &a[i]);
    dp[i] = (dp[i - 1] + dp[i - 1] * mypow(invA, a[i] - a[i - 1]) % MOD) % MOD;
    (ans += dp[i]) %= MOD;
  }
  long long inv2 = mypow(2, MOD - 2);
  cout << (dp[m] * (mypow(inv2, m))) % MOD << endl;
  return 0;
}
