#include <bits/stdc++.h>
using namespace std;
const long mod=1e9+7;
#define ll long long
#define ft first
#define sc second
#define pb push_back
ll n,rest,kq,a[300005];
pair<ll ,ll > b[300005];
bool kt[300005];
vector<vector<ll> > f;
bool cmp(pair<ll , ll > a , pair <ll ,ll > b){
return a.sc<b.sc;
}
ll tinh (ll i , ll c){
if (i>n) return 1;
if (f[i][c]!=-1) return f[i][c];
ll t=0;
for (int j=1;j<=n;j++){
if (kt[j]==1) continue;
kt[j]=1;
t+=tinh(i+1,j);
kt[j]=0;
}
return (f[i][c]=t);
}
void thutu(ll i , ll m ){
if (i>n) return;
for (int j=m+1;j<=a[i]-1;j++) rest+=tinh(i+1,j)%mod;
thutu(i+1,a[i]);
}
int main()
{
ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
freopen("thutu.inp","r",stdin);
freopen("thutu.out","w",stdout);
cin>>n;
f.resize(n+1);
for (int i=1;i<=n;i++){
for (int j=1;j<=n;j++) f[i].pb(-1);
}
for (int i=1;i<=n;i++){
cin>>b[i].sc;b[i].ft=i;
}
sort(b+1,b+n+1,cmp);
for (int i=1;i<=n;i++) a[b[i].ft]=i;
thutu(1,0);
cout<<rest+1;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmNvbnN0IGxvbmcgbW9kPTFlOSs3OwojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIGZ0IGZpcnN0CiNkZWZpbmUgc2Mgc2Vjb25kCiNkZWZpbmUgcGIgcHVzaF9iYWNrCmxsIG4scmVzdCxrcSxhWzMwMDAwNV07CnBhaXI8bGwgLGxsID4gYlszMDAwMDVdOwpib29sIGt0WzMwMDAwNV07CnZlY3Rvcjx2ZWN0b3I8bGw+ID4gZjsKYm9vbCBjbXAocGFpcjxsbCAsIGxsID4gYSAsIHBhaXIgPGxsICxsbCA+IGIpewogICAgcmV0dXJuIGEuc2M8Yi5zYzsKfQoKbGwgdGluaCAobGwgaSAsIGxsIGMpewogICAgaWYgKGk+bikgcmV0dXJuIDE7CiAgICBpZiAoZltpXVtjXSE9LTEpIHJldHVybiBmW2ldW2NdOwogICAgbGwgdD0wOwogICAgZm9yIChpbnQgaj0xO2o8PW47aisrKXsKICAgICAgICBpZiAoa3Rbal09PTEpIGNvbnRpbnVlOwogICAgICAgIGt0W2pdPTE7CiAgICAgICAgdCs9dGluaChpKzEsaik7CiAgICAgICAga3Rbal09MDsKICAgIH0KICAgIHJldHVybiAoZltpXVtjXT10KTsKfQoKdm9pZCB0aHV0dShsbCBpICwgbGwgbSApewogICAgaWYgKGk+bikgcmV0dXJuOwogICAgZm9yIChpbnQgaj1tKzE7ajw9YVtpXS0xO2orKykgcmVzdCs9dGluaChpKzEsaiklbW9kOwogICAgdGh1dHUoaSsxLGFbaV0pOwp9CgppbnQgbWFpbigpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7Y2luLnRpZSgwKTtjb3V0LnRpZSgwKTsKICAgIGZyZW9wZW4oInRodXR1LmlucCIsInIiLHN0ZGluKTsKICAgIGZyZW9wZW4oInRodXR1Lm91dCIsInciLHN0ZG91dCk7CiAgICBjaW4+Pm47CgogICAgZi5yZXNpemUobisxKTsKICAgIGZvciAoaW50IGk9MTtpPD1uO2krKyl7CiAgICAgICAgZm9yIChpbnQgaj0xO2o8PW47aisrKSBmW2ldLnBiKC0xKTsKICAgIH0KICAgIGZvciAoaW50IGk9MTtpPD1uO2krKyl7CiAgICAgICAgY2luPj5iW2ldLnNjO2JbaV0uZnQ9aTsKICAgIH0KICAgIHNvcnQoYisxLGIrbisxLGNtcCk7CiAgICBmb3IgKGludCBpPTE7aTw9bjtpKyspIGFbYltpXS5mdF09aTsKICAgIHRodXR1KDEsMCk7CiAgICBjb3V0PDxyZXN0KzE7CiAgICByZXR1cm4gMDsKfQo=