#include <bits/stdc++.h>
typedef long long int ll;
typedef long double ld;
#define pb push_back
#define pii pair < int , int >
#define F first
#define S second
#define endl '\n'
#define int long long
#define sync ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math")
#define kill(x) return cout<<x<<'\n', 0;
using namespace std;
const int N=2e5+100;
ll mod=998244353;
ll lazy[N*4],seg[N*4];
ll power(ll n,ll k){
    if (k==0) return 1;
    if (k%2==1){
        ll x=power(n,k/2);
        return x*x%mod*n%mod;
    }
    ll x=power(n,k/2);
    return x*x%mod;
}
void shift(ll nod){
    seg[nod*2]*=lazy[nod];
    seg[nod*2]%=mod;
    lazy[nod*2]*=lazy[nod];
    lazy[nod*2]%=mod;
    seg[nod*2+1]*=lazy[nod];
    seg[nod*2+1]%=mod;
    lazy[nod*2+1]*=lazy[nod];
    lazy[nod*2+1]%=mod;
    lazy[nod]=1;
}
void upd(ll nod,ll l,ll r,ll L,ll R,ll val){
    if (l>=R || L>=r) return ;
    if (l>=L && r<=R){
        lazy[nod]*=val;
        seg[nod]*=val;
        lazy[nod]%=mod;
        seg[nod]%=mod;
        return ;
    }
    ll mid=(r+l)/2;
    shift(nod);
    upd(nod*2,l,mid,L,R,val);
    upd(nod*2+1,mid,r,L,R,val);
    seg[nod]=seg[nod*2]+seg[nod*2+1];
    seg[nod]%=mod;
}
void add(ll nod,ll l,ll r,ll id){
    if (r-l==1){
        seg[nod]=1;
        return ;
    }
    ll mid=(r+l)/2;
    shift(nod);
    if (mid>id) add(nod*2,l,mid,id);
    else add(nod*2+1,mid,r,id);
    seg[nod]=seg[nod*2]+seg[nod*2+1];
    seg[nod]%=mod;
}
ll get(ll nod,ll l,ll r,ll L,ll R){
    if (l>=R || L>=r) return 0;
    if (l>=L && r<=R) return seg[nod];
    shift(nod);
    ll mid=(r+l)/2;
    return get(nod*2,l,mid,L,R)+get(nod*2+1,mid,r,L,R);
}
ll fen[N];
void ad(ll idx,ll val){
    for (;idx<N;idx+= idx & (-idx)) fen[idx]+=val;
}
ll ge(ll idx){
    ll s=0;
    for (;idx;idx-= idx & (-idx)) s+=fen[idx];
    return s;
}
ll a[N];
int32_t main(){
    sync;
    for (int i=0;i<N*4;i++){
        lazy[i]=1;
    }
    ll n,k;
    cin >> n >> k;
    for (int i=1;i<=n;i++){
        cin >> a[i];
    }
    ll ans=(k-1)*k/2;
    ans%=mod;
    ans*=power(2,mod-2);
    ans%=mod;
    ll z=(k-1)*power(k,mod-2)%mod;
    for (int i=1;i<=n-k;i++){
        ll cnt=n-i;
        ll zz=power(z,i);
        ans+=cnt*zz%mod*power(2,mod-2)%mod;
        ans%=mod;
    }
    for (int i=1;i<=k;i++){
        add(1,1,n+1,a[i]);
        ad(a[i],1);
    }
    for (int i=k+1;i<=n;i++){
        upd(1,1,n+1,1,n+1,z);
        ll y=get(1,1,n+1,a[i],n+1);
        y%=mod;
        ll e=ge(N-1)-ge(a[i])+mod;
        e%=mod;
        //cout << e << endl;
        ans+=e-y;
        ans+=mod;
        ans%=mod;
        add(1,1,n+1,a[i]);
        ad(a[i],1);
    }
    cout << ans%mod << endl;
}
