#include <bits/stdc++.h>
using namespace std;
long long mod = 998244353;
long long power(long long a, long long b) {
  if (b >= mod) b -= mod - 1;
  long long c = 1;
  while (b > 0) {
    if (b % 2) c *= a, c %= mod;
    b /= 2;
    a *= a;
    a %= mod;
  }
  return c;
}
const long long N = 2e5 + 5;
inline long long add(long long a, long long b) {
  a += b;
  if (a >= mod) a -= mod;
  return a;
}
inline long long sub(long long a, long long b) {
  a -= b;
  if (a < 0) a += mod;
  return a;
}
inline long long mul(long long a, long long b) { return (a * b) % mod; }
long long br[N];
vector<long long> v;
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cout << setprecision(25);
  long long n, m, a;
  cin >> n >> m >> a;
  for (long long i = 1; i <= m; i++) cin >> br[i];
  v.push_back(br[1]);
  for (long long i = 2; i <= m; i++) v.push_back(br[i] - br[i - 1]);
  long long i2 = power(2, mod - 2);
  long long ans = power(a, n - 2 * br[m]);
  for (auto z : v) {
    long long b1 = power(a, 2 * z);
    long long b2 = power(a, z);
    long long tmp = add(mul(sub(b1, b2), i2), b2);
    ans = mul(ans, tmp);
  }
  cout << ans << '\n';
}
