#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
const int INF = 1e9;
const ll LINF = 1e18;
const int N = 2e5 + 5;
const int MOD = 1e9 + 7;
void add(int& a, int b) {
a += b;
if (a >= MOD) a -= MOD;
}
int n;
int a[N];
void compress(int a[]) {
vector<int> vals;
for (int i = 1; i <= n; i++) vals.push_back(a[i]);
sort(vals.begin(), vals.end());
vals.resize(unique(vals.begin(), vals.end()) - vals.begin());
for (int i = 1; i <= n; i++) {
a[i] = lower_bound(vals.begin(), vals.end(), a[i]) - vals.begin();
}
}
struct fenwick {
int n;
vector<int> ft;
fenwick(int n): n(n) {
ft.resize(n);
}
void update(int pos, int val) {
for (; pos < n; pos = pos | (pos + 1)) add(ft[pos], val);
}
int get(int pos) {
int ans = 0;
for (; pos >= 0; pos = (pos & (pos + 1)) - 1) add(ans, ft[pos]);
return ans;
}
};
int dp[N]; // dp[i] = số dãy con tăng kết thúc tại i
int main() {
ios::sync_with_stdio(0); cin.tie(0);
cin >> n;
for (int i = 1; i <= n; i++) cin >> a[i];
compress(a);
fenwick BIT(n);
for (int i = 1; i <= n; i++) {
dp[i] = 1;
add(dp[i], BIT.get(a[i] - 1));
BIT.update(a[i], dp[i]);
}
int ans = 0;
for (int i = 1; i <= n; i++) add(ans, dp[i]);
cout << ans << '\n';
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAp1c2luZyBuYW1lc3BhY2Ugc3RkOyAgCgp0eXBlZGVmIGxvbmcgbG9uZyBsbDsgIAp0eXBlZGVmIHBhaXI8aW50LCBpbnQ+IGlpOyAgCgpjb25zdCBpbnQgSU5GID0gMWU5OyAgCmNvbnN0IGxsIExJTkYgPSAxZTE4OyAgCgpjb25zdCBpbnQgTiA9IDJlNSArIDU7IApjb25zdCBpbnQgTU9EID0gMWU5ICsgNzsKCnZvaWQgYWRkKGludCYgYSwgaW50IGIpIHsKCWEgKz0gYjsgCglpZiAoYSA+PSBNT0QpIGEgLT0gTU9EOyAgCn0KCmludCBuOyAgCmludCBhW05dOyAKCnZvaWQgY29tcHJlc3MoaW50IGFbXSkgewoJdmVjdG9yPGludD4gdmFsczsgIAoJZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB2YWxzLnB1c2hfYmFjayhhW2ldKTsgIAoKCXNvcnQodmFscy5iZWdpbigpLCB2YWxzLmVuZCgpKTsgIAoJdmFscy5yZXNpemUodW5pcXVlKHZhbHMuYmVnaW4oKSwgdmFscy5lbmQoKSkgLSB2YWxzLmJlZ2luKCkpOyAgIAoKCWZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewoJCWFbaV0gPSBsb3dlcl9ib3VuZCh2YWxzLmJlZ2luKCksIHZhbHMuZW5kKCksIGFbaV0pIC0gdmFscy5iZWdpbigpOyAgCgl9Cn0KCnN0cnVjdCBmZW53aWNrIHsKCWludCBuOyAKCXZlY3RvcjxpbnQ+IGZ0OyAKCglmZW53aWNrKGludCBuKTogbihuKSB7CgkJZnQucmVzaXplKG4pOyAKCX0KCgl2b2lkIHVwZGF0ZShpbnQgcG9zLCBpbnQgdmFsKSB7CgkJZm9yICg7IHBvcyA8IG47IHBvcyA9IHBvcyB8IChwb3MgKyAxKSkgYWRkKGZ0W3Bvc10sIHZhbCk7IAoJfQoKCWludCBnZXQoaW50IHBvcykgewoJCWludCBhbnMgPSAwOyAgCgkJZm9yICg7IHBvcyA+PSAwOyBwb3MgPSAocG9zICYgKHBvcyArIDEpKSAtIDEpIGFkZChhbnMsIGZ0W3Bvc10pOyAKCQlyZXR1cm4gYW5zOyAKCX0KfTsgCgppbnQgZHBbTl07IC8vIGRwW2ldID0gc+G7kSBkw6N5IGNvbiB0xINuZyBr4bq/dCB0aMO6YyB04bqhaSBpIAoKaW50IG1haW4oKSB7Cglpb3M6OnN5bmNfd2l0aF9zdGRpbygwKTsgY2luLnRpZSgwKTsgIAkKCWNpbiA+PiBuOyAKCWZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgY2luID4+IGFbaV07ICAKCgljb21wcmVzcyhhKTsgIAoJCglmZW53aWNrIEJJVChuKTsgICAKCglmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKCQlkcFtpXSA9IDE7ICAKCQlhZGQoZHBbaV0sIEJJVC5nZXQoYVtpXSAtIDEpKTsgCgkJQklULnVwZGF0ZShhW2ldLCBkcFtpXSk7IAoJfQoKCWludCBhbnMgPSAwOyAgIAoJZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSBhZGQoYW5zLCBkcFtpXSk7ICAKCgljb3V0IDw8IGFucyA8PCAnXG4nOyAKfQ==