#include<bits/stdc++.h>
#define int long long
#define ull unsigned long long
#define rd(x) scanf("%lld",&x)
#define FOR(i,x,y,z) for(auto i=x;i<=y;i+=z)
#define pii pair<int,int>
#define pll pair<ll,ll>
#define udm unordered_map
using namespace std;
const int mod = 998244353;
int pre[1000001];
struct BIT{
int c[1000001];
int lowbit(int x){
return x&-x;
}
void add(int x,int val){
for(int i=x;i<=1000000;i+=lowbit(i)){
c[i]+=val;
}
}
int sum(int x){
int ans=0;
for(int i=x;i>0;i-=lowbit(i)){
ans+=c[i];
}
return ans;
}
};
void pree(){
pre[1]=1;
for(int i=2;i<=1000000;i++){
pre[i] = (pre[i-1]*i) % mod;
}
}
void solve(){
pree();
int n;
rd(n);
int arr[n+1];
int ans=0;
BIT a;
for(int i=1;i<=n;i++){
rd(arr[i]);
ans+=((arr[i]-a.sum(arr[i]-1)-1)*pre[n-i] %mod);
a.add(arr[i],1);
ans%=mod;
}
cout<<(ans+1)%mod;
return;
}
signed main(){
int T=1;
while(T--){
solve();
}
return 0;
}