#include<iostream>
#include<cstdio>
using namespace std;
int n;
int ans;
#define lowbit(x) x&(-x)
const int mod=998244353;
const int N=1e8;
int jc[N];
int a[N];
int t[N];
inline void add(int x,int k)
{
for(int i=x;i<=n;i+=lowbit(i))
t[i]+=k;
}
inline int query(int x)
{
int p=0;
for(int i=x;i;i-=lowbit(i))
p+=t[i];
return p;
}
int main()
{
cin>>n;
jc[0]=1;
for(int i=1;i<=n;++i)
jc[i]=(jc[i-1]*i)%mod;
for(int i=1;i<=n;++i)
{
scanf("%d",&a[i]);
add(i,1);
}
for(int i=1;i<=n;++i)
{
ans=(ans+((query(a[i])-1)*jc[n-i])%mod)%mod;
add(a[i],-1);
}
ans++;
cout<<ans;
return 0;
}