func_code_string: #include <bits/stdc++.h>   using namespace std;   long long F[401000], Mod = 998244353, InvF[401000];   long long Pow(long long a, long long b) {     long long r = 1;     while (b) {       if (b & 1) r = r * a % Mod;       a = a * a % Mod;       b >>= 1;     }     return r;   }   int A[201000], n, K;   long long S[201000], res;   long long Comb(int a, int b) {     return F[a] * InvF[b] % Mod * InvF[a - b] % Mod;   }   int main() {     int i;     F[0] = 1;     for (i = 1; i <= 400000; i++) F[i] = F[i - 1] * i % Mod;     InvF[i - 1] = Pow(F[i - 1], Mod - 2);     for (i = i - 1; i >= 1; i--) InvF[i - 1] = InvF[i] * i % Mod;     scanf( %d%d , &n, &K);     for (i = 0; i < n; i++) {       scanf( %d , &A[i]);     }     int c2 = 0, c1 = 0;     for (i = 0; i < n; i++) {       if (A[i] == A[(i + 1) % n])         c2++;       else         c1++;     }     for (i = 0; i <= c1; i++) {       if (i % 2 == 1) {         S[i] = Pow(2, i - 1) % Mod;       } else {         S[i] = (Pow(2, i) - Comb(i, i / 2) + Mod) * (Mod / 2 + 1) % Mod;       }     }     for (i = 0; i <= c1; i++) {       if (K >= 2 || i == c1) {         res = (res + Pow(K - 2, c1 - i) * S[i] % Mod * Comb(c1, i)) % Mod;       }     }     res = res * Pow(K, c2) % Mod;     printf( %lld n , res);   }   