#include <bits/stdc++.h>
using namespace std;
long long res, d, e, k;
int N;
int h[200201];
long long f[200201];
long long pw(long long a, long long n) {
  long long ret = 1;
  while (n) {
    if (n % 2) ret *= a, ret %= 998244353;
    a *= a, a %= 998244353;
    n >>= 1;
  }
  return ret;
}
long long inv(long long n) { return pw(n, 998244353 - 2); }
long long C(long long n, long long r) {
  return f[n] * inv(f[r]) % 998244353 * inv(f[n - r]) % 998244353;
}
int main() {
  f[0] = 1;
  for (int i = 1; i < 200201; i++) f[i] = f[i - 1] * i % 998244353;
  scanf("%d %d", &N, &k);
  if (k == 1) return !printf("0");
  for (int i = 0; i < N; i++) scanf("%d", &h[i]);
  for (int i = 0; i < N; i++) {
    if (h[i] == h[(i + 1) % N])
      e++;
    else
      d++;
  }
  for (long long s = 0; s < d; s++) {
    long long mul = 1;
    mul *= pw(k - 2, s);
    mul %= 998244353;
    mul *= C(d, s);
    mul %= 998244353;
    long long sum = 0;
    if ((d - s) % 2)
      sum = pw(2, d - s - 1);
    else {
      sum = pw(2, d - s - 1);
      sum -= C(d - s - 1, (d - s) / 2);
      sum %= 998244353;
      sum += 998244353;
      sum %= 998244353;
    }
    mul *= sum;
    mul %= 998244353;
    res += mul;
    res %= 998244353;
  }
  res *= pw(k, e);
  res %= 998244353;
  printf("%lld", res);
  return 0;
}
