#include <bits/stdc++.h>
using namespace std;
const long long MOD = 998244353;
vector<long long> fact;
vector<long long> powers;
long long fastpow(long long n, long long k) {
  if (k == 0) return 1;
  long long v = fastpow(n, k / 2);
  if (k % 2 == 1)
    return (((v * v) % MOD) * n) % MOD;
  else
    return (v * v) % MOD;
}
long long rev(long long n) { return fastpow(n, MOD - 2); }
long long cnk(long long n, long long k) {
  return (((fact[n] * rev(fact[k])) % MOD) * rev(fact[n - k])) % MOD;
}
long long sum_half(long long n) {
  if (n % 2 == 1)
    return powers[n - 1];
  else {
    long long h = (cnk(n, n / 2) * rev(2)) % MOD;
    return ((powers[n - 1] - h) % MOD + MOD) % MOD;
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  long long n, k;
  cin >> n >> k;
  vector<int> num(n);
  for (int i = 0; i < n; i++) cin >> num[i];
  long long eq = 0;
  for (int i = 0; i < n; i++)
    if (num[i] == num[(i + 1) % n]) eq++;
  n -= eq;
  fact.resize(2e5 + 5);
  fact[0] = 1;
  for (long long i = 1; i < 2e5 + 5; i++) fact[i] = (fact[i - 1] * i) % MOD;
  powers.resize(2e5 + 5);
  powers[0] = 1;
  for (long long i = 1; i < 2e5 + 5; i++)
    powers[i] = (powers[i - 1] * 2ll) % MOD;
  long long ans = 0;
  for (long long q = 1; q <= n; q++) {
    ans +=
        (((((cnk(n, q) * sum_half(q)) % MOD) * fastpow(k - 2, n - q)) % MOD) *
         fastpow(k, eq)) %
        MOD;
    ans %= MOD;
  }
  cout << ans << endl;
  return 0;
}
