#include<bits/stdc++.h>
#define cs const
#define pb push_back
using namespace std;
cs int Mod = 1e9 + 7, iv2 = (Mod+1)>>1;
int add(int a, int b){ return a + b >= Mod ? a + b - Mod : a + b; }
int dec(int a, int b){ return a - b < 0 ? a - b + Mod : a - b; }
int mul(int a, int b){ return 1ll * a * b % Mod; }
void Add(int &a, int b){ a = add(a,b); }
void Mul(int &a, int b){ a = mul(a,b); }
void Dec(int &a, int b){ a = dec(a,b); }
int ksm(int a, int b){ int as=1; for(;b;b>>=1,Mul(a,a)) if(b&1) Mul(as,a); return as; }
cs int N = 2e5 + 50;
int n, a[N], ct[N], pr[N], iv[N], ps[N], z[N];
namespace bit{
	int c[N], b[N];
	void clr(){ memset(c,0,sizeof(c)); memset(b,0,sizeof(b)); }
	void add(int x, int v){ for(;x<=n;x+=x&-x) Add(c[x],v), ++b[x]; }
	int ask(int x){ int as=0; for(;x;x-=x&-x) Add(as,c[x]); return as; }
	int ask(int l, int r){ return dec(ask(r),ask(l-1)); }
	int qry(int x){ int as=0; for(;x;x-=x&-x) as+=b[x]; return as; }
}
int main(){
	#ifdef FSYolanda
	freopen("1.in","r",stdin);
	#endif
	scanf("%d",&n);
	for(int i=1; i<=n; i++) scanf("%d",&a[i]), ++ct[a[i]];
	for(int i=n; i>=1; i--) ct[i]+=ct[i+1];
	int prd = 1;
	for(int i=1; i<=n; i++) ct[i]-=(n-i), Mul(prd,max(ct[i],0));
	if(!prd) return puts("0"), 0; pr[0] = iv[0] = 1;
	for(int i=1; i<=n; i++){
		int x=mul(ct[i]-1,ksm(ct[i],Mod-2)); if(!x) ps[z[i]=z[i-1]+1]=i, x=1;
		else z[i]=z[i-1]; pr[i] = mul(pr[i-1],x);
		iv[i] = mul(iv[i-1], ksm(x,Mod-2));
	} int Ans=0; bit::clr();
	for(int i=1; i<=n; i++){
		int sm = bit::ask(ps[z[a[i]]]+1,a[i]);
		Add(Ans, mul(mul(iv2, prd), mul(sm, pr[a[i]])));
		bit::add(a[i], iv[a[i]]);
	} bit::clr();
	for(int i=n; i>=1; i--){
		int sm = bit::ask(ps[z[a[i]]]+1,a[i]-1);
		Dec(Ans, mul(mul(iv2, prd), mul(sm, pr[a[i]])));
		Add(Ans, mul(prd, bit::qry(a[i]-1)));
		bit::add(a[i], iv[a[i]]);
	} cout << Ans; return 0;	
}