#include <bits/stdc++.h>
#define FOR(i,a,b) for(int i=(a),_b=(b); i<=_b; ++i)
#define fi first
#define se second
#define el "\n"
#define pb push_back
#define sz(x) (int)(x).size()
#define FILL(a,b) memset(a,b,sizeof(a))
using namespace std;
typedef long long ll;
typedef pair<int,int> ii;
const int N = 1000003;
const ll MOD = 1000000007LL;
struct BIT{
int n;
vector<ll> f;
void init(int m){ n=m; f.assign(n+5,0); }
void add(int i, ll v){ for(; i<=n; i+=i&-i){ f[i]+=v; if(f[i]>=MOD) f[i]-=MOD; } }
ll sum(int i){ ll s=0; for(; i>0; i-=i&-i){ s+=f[i]; if(s>=MOD) s-=MOD; } return s; }
};
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n;
if(!(cin>>n)) return 0;
vector<ll> a(n+1), b;
FOR(i,1,n){ cin>>a[i]; b.pb(a[i]); }
sort(b.begin(), b.end());
b.erase(unique(b.begin(), b.end()), b.end());
int m = sz(b);
vector<ll> L(n+1,0), R(n+1,0);
BIT bit;
bit.init(m);
FOR(i,1,n){
int p = int(lower_bound(b.begin(), b.end(), a[i]) - b.begin()) + 1;
L[i] = (1 + bit.sum(p-1)) % MOD;
bit.add(p, L[i]);
}
bit.init(m);
for(int i=n;i>=1;--i){
int p = int(lower_bound(b.begin(), b.end(), a[i]) - b.begin()) + 1;
R[i] = (1 + bit.sum(p-1)) % MOD;
bit.add(p, R[i]);
}
ll ans = 1;
FOR(i,1,n){
ans = (ans + (L[i] * R[i]) % MOD) % MOD;
}
cout << ans;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgRk9SKGksYSxiKSBmb3IoaW50IGk9KGEpLF9iPShiKTsgaTw9X2I7ICsraSkKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIGVsICJcbiIKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBzeih4KSAoaW50KSh4KS5zaXplKCkKI2RlZmluZSBGSUxMKGEsYikgbWVtc2V0KGEsYixzaXplb2YoYSkpCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnR5cGVkZWYgbG9uZyBsb25nIGxsOwp0eXBlZGVmIHBhaXI8aW50LGludD4gaWk7CmNvbnN0IGludCBOID0gMTAwMDAwMzsKY29uc3QgbGwgTU9EID0gMTAwMDAwMDAwN0xMOwoKc3RydWN0IEJJVHsKICAgIGludCBuOwogICAgdmVjdG9yPGxsPiBmOwogICAgdm9pZCBpbml0KGludCBtKXsgbj1tOyBmLmFzc2lnbihuKzUsMCk7IH0KICAgIHZvaWQgYWRkKGludCBpLCBsbCB2KXsgZm9yKDsgaTw9bjsgaSs9aSYtaSl7IGZbaV0rPXY7IGlmKGZbaV0+PU1PRCkgZltpXS09TU9EOyB9IH0KICAgIGxsIHN1bShpbnQgaSl7IGxsIHM9MDsgZm9yKDsgaT4wOyBpLT1pJi1pKXsgcys9ZltpXTsgaWYocz49TU9EKSBzLT1NT0Q7IH0gcmV0dXJuIHM7IH0KfTsKCmludCBtYWluKCl7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKE5VTEwpOwogICAgY291dC50aWUoTlVMTCk7CiAgICAKICAgIGludCBuOwogICAgaWYoIShjaW4+Pm4pKSByZXR1cm4gMDsKICAgIHZlY3RvcjxsbD4gYShuKzEpLCBiOwogICAgRk9SKGksMSxuKXsgY2luPj5hW2ldOyBiLnBiKGFbaV0pOyB9CiAgICBzb3J0KGIuYmVnaW4oKSwgYi5lbmQoKSk7CiAgICBiLmVyYXNlKHVuaXF1ZShiLmJlZ2luKCksIGIuZW5kKCkpLCBiLmVuZCgpKTsKICAgIGludCBtID0gc3ooYik7CgogICAgdmVjdG9yPGxsPiBMKG4rMSwwKSwgUihuKzEsMCk7CiAgICBCSVQgYml0OwogICAgYml0LmluaXQobSk7CiAgICBGT1IoaSwxLG4pewogICAgICAgIGludCBwID0gaW50KGxvd2VyX2JvdW5kKGIuYmVnaW4oKSwgYi5lbmQoKSwgYVtpXSkgLSBiLmJlZ2luKCkpICsgMTsKICAgICAgICBMW2ldID0gKDEgKyBiaXQuc3VtKHAtMSkpICUgTU9EOwogICAgICAgIGJpdC5hZGQocCwgTFtpXSk7CiAgICB9CiAgICBiaXQuaW5pdChtKTsKICAgIGZvcihpbnQgaT1uO2k+PTE7LS1pKXsKICAgICAgICBpbnQgcCA9IGludChsb3dlcl9ib3VuZChiLmJlZ2luKCksIGIuZW5kKCksIGFbaV0pIC0gYi5iZWdpbigpKSArIDE7CiAgICAgICAgUltpXSA9ICgxICsgYml0LnN1bShwLTEpKSAlIE1PRDsKICAgICAgICBiaXQuYWRkKHAsIFJbaV0pOwogICAgfQogICAgbGwgYW5zID0gMTsKICAgIEZPUihpLDEsbil7CiAgICAgICAgYW5zID0gKGFucyArIChMW2ldICogUltpXSkgJSBNT0QpICUgTU9EOwogICAgfQogICAgY291dCA8PCBhbnM7CiAgICByZXR1cm4gMDsKfQ==