#include #include #include using namespace std; using namespace atcoder; using mint = modint998244353; #define rep(i,n) for (int i = 0; i < (n); ++i) #define Inf32 1000000001 #define Inf64 4000000000000000001LL int main(){ int n,m; cin>>n>>m; vector a(n); rep(i,n)cin>>a[i]; a.insert(a.begin(),0); a.push_back(0); int ok = 0; rep(i,a.size()-1){ if(a[i]==a[i+1])ok++; } n = a.size()-1; vector dp(n+1); dp[ok] = 1; mint i2 = mint(2).inv(); rep(_,m){ vector ndp(n+1,0); rep(j,n+1){ ndp[j] += dp[j] * j * (n-j); if(j+2<=n){ ndp[j+2] += dp[j] * (n-j) * (n-j-1) * i2; } if(j-2>=0){ ndp[j-2] += dp[j] * j * (j-1) * i2; } } swap(dp,ndp); } cout<