#include<iostream>
#include<algorithm>
#include<atcoder/modint>
#include<atcoder/fenwicktree>
using namespace std;
using namespace atcoder;
using mint=modint998244353;
int N,K;
int P[2<<17];
long calc()
{
	fenwick_tree<int>A(N+1);
	long ans=0;
	for(int i=0;i<N;i++)
	{
		ans+=i-A.sum(0,P[i]);
		A.add(P[i],1);
	}
	return ans;
}
main()
{
	cin>>N>>K;
	for(int i=0;i<N;i++)cin>>P[i];
	mint ans=calc();
	ans*=K;
	mint invK=mint(1)/K;
	mint X=mint(K-1)*invK;
	mint Y=mint(K-2)*invK;
	mint invY=mint(1)/(1-Y);
	mint Kinv2=mint(1)/2*K;
	fenwick_tree<int>Q(N+1);
	fenwick_tree<int>R(N+1);
	for(int j=1;j<N;j++)
	{
		Q.add(P[j-1],1);
		if(j<=K)R.add(P[j-1],1);
		int t=min(N-j,N-K);
		mint Yt=Y.pow(t);
		mint T=(1-Yt)*invY+Yt*Kinv2;
		mint tmp=0;
		if(j<=K-1)
		{
			tmp=2*Q.sum(0,P[j])-j;
		}
		else
		{
			tmp=X.pow(j-(K-1))*(2*R.sum(0,P[j])-K);
			mint a=X;
			for(int i=j;--i>=K;)
			{
				if(P[i]<P[j])tmp+=a;
				else tmp-=a;
				a*=X;
			}
		}
		ans+=tmp*T;
	}
	cout<<(ans*invK).val()<<endl;
}
