#include <bits/stdc++.h>
using namespace std;
inline int read() {
  int x = 0, fu = 0;
  char ch = getchar();
  for (; ch < 48 || ch > 57; ch = getchar()) fu |= (ch == '-');
  for (; ch > 47 && ch < 58; ch = getchar()) x = x * 10 + ch - '0';
  return fu ? -x : x;
}
long long Q_P(long long x, int y) {
  long long R = 1;
  for (; y; y >>= 1, x = x * x % 998244353)
    if (y & 1) R = R * x % 998244353;
  return R;
}
int n, m, l, b[200005];
int main() {
  n = read(), m = read(), l = read();
  for (int i = 1; i <= m; i++) b[i] = read();
  long long ans = Q_P(l, n - (b[m] << 1)), tmp;
  for (int i = 1; i <= m; i++) {
    tmp = Q_P(l, b[i] - b[i - 1]);
    ans = ans * (tmp * tmp % 998244353 - tmp * (tmp - 1) / 2 % 998244353) %
          998244353;
  }
  printf("%I64d\n", ans < 0 ? ans + 998244353 : ans);
  return 0;
}
