#include using namespace std; using ll = long long; #define all(A) A.begin(),A.end() using vll = vector; #define rep(i, n) for (long long i = 0; i < (long long)(n); i++) using Graph = vector>; ll mod=998244353; ll inva(ll N) { ll a = N, b = mod, c = 1, d = 0; while (b > 0) { ll t = a / b; a -= t * b; swap(a, b); c -= t * d; swap(c, d); } c %= mod; if (c < 0)c += mod; return c; }//割り算時に使う逆元を求める. int main() { ll N,M; cin>>N>>M; set A; rep(i,M){ ll Ai; cin>>Ai; A.insert(Ai); } vll B(N); ll an=0; rep(i,N){ B[i]=*A.lower_bound(i+1); an+=B[i]*inva(N-i); an%=mod; } cout<