#include <bits/stdc++.h>
using namespace std;
long long fact[200005];
long long extgcd(long long a, long long b, long long& x, long long& y) {
  long long d = a;
  if (b != 0LL) {
    d = extgcd(b, a % b, y, x);
    y -= (a / b) * x;
  } else {
    x = 1;
    y = 0;
  }
  return d;
}
long long mod_inverse(long long a, long long m) {
  long long x, y;
  extgcd(a, m, x, y);
  return (m + x % m) % m;
}
long long mod_fact(long long n, long long p, long long& e) {
  e = 0;
  if (n == 0) return 1;
  long long res = mod_fact(n / p, p, e);
  e += n / p;
  if (n / p % 2 != 0) {
    return res * (p - fact[n % p]) % p;
  }
  return res * fact[n % p] % p;
}
long long mod_comb(long long n, long long k, long long p) {
  if (n < 0 || k < 0 || n < k) return 0;
  long long e1, e2, e3;
  long long a1 = mod_fact(n, p, e1), a2 = mod_fact(k, p, e2),
            a3 = mod_fact(n - k, p, e3);
  if (e1 > e2 + e3) return 0;
  return a1 * mod_inverse(a2 * a3 % p, p) % p;
}
long long mod_pow(long long x, long long n) {
  long long ans = 1;
  while (n > 0) {
    if (n & 1) {
      ans = ans * x % 998244353LL;
    }
    x = x * x % 998244353LL;
    n >>= 1;
  }
  return ans;
}
int n;
long long k;
int h[200005];
int main(void) {
  fact[0] = 1;
  for (long long i = 1; i <= 200000; i++) {
    fact[i] = fact[i - 1] * i % 998244353LL;
  }
  scanf("%d%lld", &n, &k);
  for (int i = 0; i < n; i++) {
    scanf("%d", &h[i]);
  }
  int cur = 0, nxt = 1;
  long long po = 1;
  int cnt = 0;
  for (int i = 0; i < n; i++) {
    int ans = h[i];
    int cans = h[(i + 1) % n];
    if (ans == cans) {
      po = po * k % 998244353LL;
    } else {
      cnt++;
    }
  }
  long long ans = 0;
  long long v1 = 1;
  for (int i = 0; i < cnt; i++) {
    int rest = cnt - i;
    long long v4 = mod_comb(cnt, i, 998244353LL);
    long long sum = 0;
    if (rest % 2 == 1) {
      if (i == cnt) {
        sum += v1 * mod_pow(2, rest - 1) % 998244353LL;
        sum %= 998244353LL;
      } else {
        sum += v1 * mod_pow(2, rest - 1) % 998244353LL;
        sum %= 998244353LL;
      }
    } else if (rest > 0) {
      long long v3 = mod_pow(2, rest - 1);
      long long v5 = mod_comb(rest - 1, rest / 2, 998244353LL);
      v3 = (v3 - v5 + 998244353LL) % 998244353LL;
      sum += v1 * v3 % 998244353LL;
      sum %= 998244353LL;
    }
    sum = sum * v4 % 998244353LL;
    ans += sum;
    ans %= 998244353LL;
    v1 = v1 * (k - 2LL) % 998244353LL;
  }
  ans = ans * po % 998244353LL;
  printf("%lld\n", ans);
  return 0;
}
