func_code_string: #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;   }   