#include<bits/stdc++.h>
using namespace std;
unsigned long long ans=0,mod=998244353;
int a[1000100]={},n,t1,fac[1000100]={1};
inline int lowbit(register int k)
{
return k&(-k);
}
inline void add(register int r,register int k)
{
while(r<=n)
{
a[r]+=k;
r+=lowbit(r);
}
}
inline long long sum(register int k)
{
register long long sm=0;
while(k>0)
{
sm+=a[k];
k-=lowbit(k);
}
return sm;
}
int main()
{
scanf("%d",&n);
for(register int i=1;i<=n;++i)
add(i,1),fac[i]=(fac[i-1]*i)%mod;
ans=1;
for(register int i=1;i<=n;++i)
{
scanf("%d",&t1);
ans=(ans+((sum(t1)-1)*fac[n-i]))%mod;
add(t1,-1);
}
printf("%lld",ans%mod);
return 0;
}