#include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; const ll INF=1LL<<60; typedef pair P; typedef pair PP; const ll MOD=998244353; ll mod_pow(ll x,ll y,ll mod){ ll res=1; while(y>0){ if(y&1){ res*=x; res%=mod; } x*=x; x%=mod; y/=2; } return res; } int main(){ int N,M; cin>>N>>M; vector A(M+1),Ap(N+1,INF); for(int i=1;i<=M;i++){ cin>>A[i]; } multiset mst; for(int i=M;i>=1;i--){ mst.insert(A[i]); } for(int i=1;i<=N;i++){ auto it=mst.lower_bound(i);//i以上となる最小の値 Ap[i]=*it; } vector p(N+1,0); ll ans=0; for(int i=N;i>=1;i--){ ll inv=mod_pow(N-i+1,MOD-2,MOD); p[i]=inv; } for(int i=N;i>=1;i--){ ans+=p[i]*Ap[i]%MOD; ans%=MOD; } cout<