package main
import (
"bufio"
"fmt"
"os"
)
const mod = 998244353
func power(base, exp int64) int64 {
res := int64(1)
base %= mod
for exp > 0 {
if exp%2 == 1 {
res = (res * base) % mod
}
base = (base * base) % mod
exp /= 2
}
return res
}
func main() {
reader := bufio.NewReader(os.Stdin)
var n int
var k int64
fmt.Fscan(reader, &n, &k)
h := make([]int64, n)
for i := 0; i < n; i++ {
fmt.Fscan(reader, &h[i])
}
m := 0
for i := 0; i < n; i++ {
if h[i] != h[(i+1)%n] {
m++
}
}
if m == 0 {
fmt.Println(0)
return
}
fact := make([]int64, m+1)
inv := make([]int64, m+1)
fact[0] = 1
for i := 1; i <= m; i++ {
fact[i] = (fact[i-1] * int64(i)) % mod
}
inv[m] = power(fact[m], mod-2)
for i := m - 1; i >= 0; i-- {
inv[i] = (inv[i+1] * int64(i+1)) % mod
}
equal := int64(0)
kMinus2 := (k - 2 + mod) % mod
for x := 0; x <= m/2; x++ {
ways := fact[m]
ways = (ways * inv[x]) % mod
ways = (ways * inv[x]) % mod
ways = (ways * inv[m-2*x]) % mod
ways = (ways * power(kMinus2, int64(m-2*x))) % mod
equal = (equal + ways) % mod
}
total := power(k, int64(m))
greater := (total - equal + mod) % mod
greater = (greater * 499122177) % mod
ans := (greater * power(k, int64(n-m))) % mod
fmt.Println(ans)
}