#include <bits/stdc++.h>
using namespace std;
const long long N = 2005;
const long long mod = 998244353LL;
long long n, k;
long long h[N];
long long c[N][N];
long long modpow(long long n, long long p) {
  if (p == 0)
    return 1LL;
  else if (p == 1)
    return n;
  long long y = modpow(n, p / 2);
  y = (y * y) % mod;
  return (p & 1) ? (y * n) % mod : y;
}
int main() {
  scanf("%lld%lld", &n, &k);
  c[0][0] = 1;
  for (int i = 0; i <= n; i++) {
    for (int j = 0; j <= n; j++) {
      if (j > i) {
        c[i][j] = 0;
      } else if (j == i || j == 0) {
        c[i][j] = 1LL;
      } else {
        c[i][j] = (c[i - 1][j - 1] + c[i - 1][j]) % mod;
      }
    }
  }
  for (int i = 0; i < n; i++) {
    scanf("%lld", &h[i]);
  }
  long long t = 0LL;
  for (int i = 0; i < n; i++) {
    if (h[i] != h[(i + 1) % n]) {
      ++t;
    }
  }
  long long inv2 = modpow(2LL, mod - 2);
  long long ans = modpow(k, n - t);
  long long pans = 0LL;
  for (int i = 0; i < t; i++) {
    long long tmp = modpow(k - 2LL, i);
    tmp = (tmp * c[t][i]) % mod;
    long long ppans = 0;
    if ((t - i) & 1LL) {
      ppans = modpow(2LL, t - i - 1LL);
    } else {
      ppans = ((modpow(2LL, t - i) - c[t - i][(t - i) / 2LL]) % mod * inv2);
    }
    ppans %= mod;
    if (ppans < 0LL) ppans += mod;
    tmp = (tmp * ppans) % mod;
    pans += tmp;
    pans %= mod;
  }
  ans *= pans;
  ans %= mod;
  cout << ans << endl;
  return 0;
}
