#include <bits/stdc++.h>
using namespace std;
#define faster ios_base::sync_with_stdio(false); cin.tie(NULL)
#define Bit(mask , i) ((mask >> i) & 1)
#define fi first
#define se second
#define _LOG2(nl) 31 - __builtin_clz(nl)
#define c_bit(nl) __builtin_popcount(nl)
#define ii pair<long long , int>
#define lll pair<long long , pair<long long , long long>>
#define lii pair<long long , pair<long long , int>>
#define iii pair<int , pair<int , int>>
#define iiii pair<pair<int , int> , pair<int , int>>
#define llll pair<pair<__int128 , __int128> , pair<__int128 , __int128>>
#define li pair<long long , int>
#define db long double
#define onBit(mask , i) (mask | (1 << i))
#define offBit(mask , i) (mask & (~(1 << i)))
const long long MOD = 1e9 + 7;
const int N = 5e5 + 7;
int a[N] , n , BIT_n[N] , L[N] , R[N];
long long BIT[N];
void inp(){
cin >> n;
for (int i = 1 ; i <= n ; ++i){
cin >> a[i];
}
}
void update(int x , long long val){
while (x <= n){
BIT[x] += val;
x += x & -x;
}
}
long long get(int x){
long long res = 0;
while (x > 0){
res += BIT[x];
x -= x & -x;
}
return res;
}
void update_n(int x , int val){
while (x > 0){
BIT_n[x] += val;
x -= x & -x;
}
}
int get_n(int x){
int res = 0;
while (x <= n){
res += BIT_n[x];
x += x & -x;
}
return res;
}
void ktao(){
for (int i = 1 ; i <= n ; ++i){
L[i] = get(a[i]);
update(a[i] , 1);
}
for (int i = n ; i >= 1 ; --i){
R[i] = get_n(a[i]);
update_n(a[i] , 1);
}
}
void solve(){
ktao();
memset(BIT , 0 , sizeof BIT);
long long res = 0;
for (int i = 1 ; i <= n ; ++i){
long long tmp = ((1LL * L[i]) * (1LL * L[i] - 1LL)) / 2;
tmp -= get(a[i]);
update(a[i] , L[i]);
res += tmp * (1LL * R[i]);
res %= MOD;
}
cout << res;
}
int main(){
// freopen("difmax.inp" , "r" , stdin);
// freopen("difmax.out" , "w" , stdout);
faster;
inp();
solve();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgZmFzdGVyIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyBjaW4udGllKE5VTEwpCiNkZWZpbmUgQml0KG1hc2sgLCBpKSAoKG1hc2sgPj4gaSkgJiAxKQojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCiNkZWZpbmUgX0xPRzIobmwpIDMxIC0gX19idWlsdGluX2NseihubCkKI2RlZmluZSBjX2JpdChubCkgX19idWlsdGluX3BvcGNvdW50KG5sKQojZGVmaW5lIGlpIHBhaXI8bG9uZyBsb25nICwgaW50PgojZGVmaW5lIGxsbCBwYWlyPGxvbmcgbG9uZyAsIHBhaXI8bG9uZyBsb25nICwgbG9uZyBsb25nPj4KI2RlZmluZSBsaWkgcGFpcjxsb25nIGxvbmcgLCBwYWlyPGxvbmcgbG9uZyAsIGludD4+CiNkZWZpbmUgaWlpIHBhaXI8aW50ICwgcGFpcjxpbnQgLCBpbnQ+PgojZGVmaW5lIGlpaWkgcGFpcjxwYWlyPGludCAsIGludD4gLCBwYWlyPGludCAsIGludD4+CiNkZWZpbmUgbGxsbCBwYWlyPHBhaXI8X19pbnQxMjggLCBfX2ludDEyOD4gLCBwYWlyPF9faW50MTI4ICwgX19pbnQxMjg+PgojZGVmaW5lIGxpIHBhaXI8bG9uZyBsb25nICwgaW50PgojZGVmaW5lIGRiIGxvbmcgZG91YmxlCiNkZWZpbmUgb25CaXQobWFzayAsIGkpIChtYXNrIHwgKDEgPDwgaSkpCiNkZWZpbmUgb2ZmQml0KG1hc2sgLCBpKSAobWFzayAmICh+KDEgPDwgaSkpKQoKY29uc3QgbG9uZyBsb25nIE1PRCA9IDFlOSArIDc7CmNvbnN0IGludCBOID0gNWU1ICsgNzsKaW50IGFbTl0gLCBuICwgQklUX25bTl0gLCBMW05dICwgUltOXTsKbG9uZyBsb25nIEJJVFtOXTsKCnZvaWQgaW5wKCl7CiAgICBjaW4gPj4gbjsKICAgIGZvciAoaW50IGkgPSAxIDsgaSA8PSBuIDsgKytpKXsKICAgICAgICBjaW4gPj4gYVtpXTsKICAgIH0KfQoKdm9pZCB1cGRhdGUoaW50IHggLCBsb25nIGxvbmcgdmFsKXsKICAgIHdoaWxlICh4IDw9IG4pewogICAgICAgIEJJVFt4XSArPSB2YWw7CiAgICAgICAgeCArPSB4ICYgLXg7CiAgICB9Cn0KCmxvbmcgbG9uZyBnZXQoaW50IHgpewogICAgbG9uZyBsb25nIHJlcyA9IDA7CiAgICB3aGlsZSAoeCA+IDApewogICAgICAgIHJlcyArPSBCSVRbeF07CiAgICAgICAgeCAtPSB4ICYgLXg7CiAgICB9CgogICAgcmV0dXJuIHJlczsKfQoKdm9pZCB1cGRhdGVfbihpbnQgeCAsIGludCB2YWwpewogICAgd2hpbGUgKHggPiAwKXsKICAgICAgICBCSVRfblt4XSArPSB2YWw7CiAgICAgICAgeCAtPSB4ICYgLXg7CiAgICB9Cn0KCmludCBnZXRfbihpbnQgeCl7CiAgICBpbnQgcmVzID0gMDsKICAgIHdoaWxlICh4IDw9IG4pewogICAgICAgIHJlcyArPSBCSVRfblt4XTsKICAgICAgICB4ICs9IHggJiAteDsKICAgIH0KCiAgICByZXR1cm4gcmVzOwp9Cgp2b2lkIGt0YW8oKXsKICAgIGZvciAoaW50IGkgPSAxIDsgaSA8PSBuIDsgKytpKXsKICAgICAgICBMW2ldID0gZ2V0KGFbaV0pOwogICAgICAgIHVwZGF0ZShhW2ldICwgMSk7CiAgICB9CgogICAgZm9yIChpbnQgaSA9IG4gOyBpID49IDEgOyAtLWkpewogICAgICAgIFJbaV0gPSBnZXRfbihhW2ldKTsKICAgICAgICB1cGRhdGVfbihhW2ldICwgMSk7CiAgICB9Cn0KCnZvaWQgc29sdmUoKXsKICAgIGt0YW8oKTsKICAgIG1lbXNldChCSVQgLCAwICwgc2l6ZW9mIEJJVCk7CgogICAgbG9uZyBsb25nIHJlcyA9IDA7CiAgICBmb3IgKGludCBpID0gMSA7IGkgPD0gbiA7ICsraSl7CiAgICAgICAgbG9uZyBsb25nIHRtcCA9ICgoMUxMICogTFtpXSkgKiAoMUxMICogTFtpXSAtIDFMTCkpIC8gMjsKICAgICAgICB0bXAgLT0gZ2V0KGFbaV0pOwogICAgICAgIHVwZGF0ZShhW2ldICwgTFtpXSk7CgogICAgICAgIHJlcyArPSB0bXAgKiAoMUxMICogUltpXSk7CiAgICAgICAgcmVzICU9IE1PRDsKICAgIH0KICAgIGNvdXQgPDwgcmVzOwp9CgppbnQgbWFpbigpewovLyAgICBmcmVvcGVuKCJkaWZtYXguaW5wIiAsICJyIiAsIHN0ZGluKTsKLy8gICAgZnJlb3BlbigiZGlmbWF4Lm91dCIgLCAidyIgLCBzdGRvdXQpOwogICAgZmFzdGVyOwogICAgaW5wKCk7CiAgICBzb2x2ZSgpOwogICAgcmV0dXJuIDA7Cn0KCg==