#include <bits/stdc++.h>
using namespace std;
long long int arr[100010];
long long int nCr[2010][2010];
long long int two_pow[2010];
long long int k_2_pow[2010];
long long int n, k;
void binomialCoeff() {
  int i, j;
  for (i = 0; i <= 2000; i++) {
    for (j = 0; j <= min(i, 2000); j++) {
      if (j == 0 || j == i)
        nCr[i][j] = 1;
      else
        nCr[i][j] =
            (nCr[i - 1][j - 1] % 998244353 + nCr[i - 1][j] % 998244353) %
            998244353;
    }
  }
  return;
}
void pow_two() {
  two_pow[0] = 1;
  for (int i = 1; i < 2010; ++i) {
    two_pow[i] = (two_pow[i - 1] * 2) % 998244353;
  }
}
void pow_k_2() {
  k_2_pow[0] = 1;
  for (int i = 1; i < 2010; ++i) {
    k_2_pow[i] = (k_2_pow[i - 1] * (k - 2)) % 998244353;
  }
}
long long binpow(long long a, long long b, long long m) {
  a %= m;
  long long res = 1;
  while (b > 0) {
    if (b & 1) res = res * a % m;
    a = a * a % m;
    b >>= 1;
  }
  return res;
}
long long int modinv(long long int a) {
  return binpow(a, 998244353 - 2, 998244353);
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(NULL);
  cin >> n >> k;
  binomialCoeff();
  pow_two();
  pow_k_2();
  for (int i = 0; i < n; ++i) {
    cin >> arr[i];
  }
  if (k == 1) {
    cout << 0 << endl;
    return 0;
  }
  long long int x = 0;
  for (int i = 0; i < n; ++i) {
    if (arr[i] != arr[(i + 1) % n]) {
      x++;
    }
  }
  long long int ans = 0;
  if (x) {
    for (int i = 1; i <= x; ++i) {
      if (i % 2) {
        ans += (nCr[x][i] * (two_pow[i - 1]) % 998244353 * k_2_pow[x - i]) %
               998244353;
        ans %= 998244353;
      } else {
        ans += ((nCr[x][i] * (((two_pow[i] - nCr[i][i / 2] + 998244353) %
                               998244353 * modinv(2)) %
                              998244353)) %
                998244353 * k_2_pow[x - i]) %
               998244353;
        ans %= 998244353;
      }
    }
  }
  long long int k_pow_n_x = binpow(k, n - x, 998244353);
  ans = (ans * k_pow_n_x) % 998244353;
  cout << ans << endl;
  return 0;
}
