#include "bits/stdc++.h"
#define rep(i,a,n) for(int i=a;i<=n;i++)
#define per(i,a,n) for(int i=n;i>=a;i--)
#define pb push_back
#define mp make_pair
#define FI first
#define SE second
#define maxn 200000
#define mod 998244353
#define inf 0x3f3f3f3f
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
typedef vector<int> vi;
typedef double db;

ll qp(ll a,ll k)
{
    ll res=1;
    while(k)
    {
        if(k&1) res=res*a%mod;
        a=a*a%mod;
        k>>=1;
    }
    return res;
}
int p[maxn+5];

struct BIT
{
    ll a[maxn+5];
    void init()
    {
        memset(a,0,sizeof a);
    }
    void add(int x,ll v)
    {
        for(;x<=maxn;x+=x&-x) a[x]=(a[x]+v+mod)%mod;
    }
    ll ask(int x)
    {
        ll res=0;
        for(;x;x-=x&-x) res=(res+a[x])%mod;
        return res;
    }
}A,B;

int id[maxn+5];

int main()
{
    int n,k; scanf("%d%d",&n,&k);
    rep(i,1,n) scanf("%d",&p[i]),id[i]=i;
    ll invk=qp(k,mod-2),inv2=qp(2,mod-2);
    sort(id+1,id+n+1,[](int a,int b){return p[a]>p[b];});
    ll ans=0;
    ll pr=(1-invk+mod)%mod;
    rep(I,1,n)
    {
        int i=id[I];
        if(i<=k) ans=(ans+inv2*(i-1))%mod;
        if(i>k)
        {
            ans=(ans+A.ask(i))%mod;
            ll tmp=(B.ask(i)-B.ask(k)+mod)*qp(pr,i)%mod;
            ll tmp2=A.ask(k)*qp(pr,i-k)%mod;
            ans=(ans-tmp*inv2%mod+mod)%mod;
            ans=(ans-tmp2*inv2%mod+mod)%mod;
        }
        A.add(i,1);
        B.add(i,qp(qp(pr,i),mod-2));
    }
    A.init(); B.init();
    per(I,1,n)
    {
        int i=id[I];
        if(i>k)
        {
            ll tmp=(B.ask(i)-B.ask(k)+mod)*qp(pr,i)%mod;
            ll tmp2=A.ask(k)*qp(pr,i-k)%mod;
            ans=(ans+tmp*inv2%mod)%mod;
            ans=(ans+tmp2*inv2%mod)%mod;
        }
        A.add(i,1);
        B.add(i,qp(qp(pr,i),mod-2));
    }
    printf("%lld\n",ans);
    return 0;
}