#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define int long long
#define F(i, l, r) for(int i = l; i <= r; ++i)
#define E(i, l, r) for(int i = l; i >= r; --i)
#define eb emplace_back
const ll mod = 1e9 + 7;
const int ars = 2e5 + 5;
const int ii = 1e9;
const ll il = 1e18;
int n, id, bit[ars], a[ars];
void upd(int p, int x) {
for(; p <= id; p += p & -p) {
bit[p] += x;
bit[p] %= mod;
}
}
int get(int p) {
int res = 0;
for(; p > 0; p -= p & -p) {
res += bit[p];
res %= mod;
}
return res;
}
vector<int> vals;
void compress() {
F(i, 1, n) {
vals.eb(a[i]);
}
sort(vals.begin(), vals.end());
vals.erase(unique(vals.begin(), vals.end()), vals.end());
F(i, 1, n) {
a[i] = lower_bound(vals.begin(), vals.end(), a[i]) - vals.begin() + 1;
}
id = vals.size();
}
int f[ars];
void solve() {
cin >> n;
F(i, 1, n) cin >> a[i];
compress();
int res = 0;
F(i, 1, n) {
f[i] = get(a[i] - 1) + 1;
f[i] %= mod;
upd(a[i], f[i]);
res = (res + f[i]) % mod;
}
cout << res;
}
signed main() {
ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
int t = 1;
// cin >> t;
while(t--) solve();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnVzaW5nIGxsID0gbG9uZyBsb25nOwojZGVmaW5lIGludCBsb25nIGxvbmcKI2RlZmluZSBGKGksIGwsIHIpIGZvcihpbnQgaSA9IGw7IGkgPD0gcjsgKytpKQojZGVmaW5lIEUoaSwgbCwgcikgZm9yKGludCBpID0gbDsgaSA+PSByOyAtLWkpCiNkZWZpbmUgZWIgZW1wbGFjZV9iYWNrCmNvbnN0IGxsIG1vZCA9IDFlOSArIDc7CmNvbnN0IGludCBhcnMgPSAyZTUgKyA1Owpjb25zdCBpbnQgaWkgPSAxZTk7CmNvbnN0IGxsIGlsID0gMWUxODsKCmludCBuLCBpZCwgYml0W2Fyc10sIGFbYXJzXTsKCnZvaWQgdXBkKGludCBwLCBpbnQgeCkgewogICAgZm9yKDsgcCA8PSBpZDsgcCArPSBwICYgLXApIHsKICAgICAgICBiaXRbcF0gKz0geDsKICAgICAgICBiaXRbcF0gJT0gbW9kOwogICAgfQp9CgppbnQgZ2V0KGludCBwKSB7CiAgICBpbnQgcmVzID0gMDsKICAgIGZvcig7IHAgPiAwOyBwIC09IHAgJiAtcCkgewogICAgICAgIHJlcyArPSBiaXRbcF07CiAgICAgICAgcmVzICU9IG1vZDsKICAgIH0KICAgIHJldHVybiByZXM7Cn0KCnZlY3RvcjxpbnQ+IHZhbHM7CnZvaWQgY29tcHJlc3MoKSB7CiAgICBGKGksIDEsIG4pIHsKICAgICAgICB2YWxzLmViKGFbaV0pOwogICAgfQogICAgc29ydCh2YWxzLmJlZ2luKCksIHZhbHMuZW5kKCkpOwogICAgdmFscy5lcmFzZSh1bmlxdWUodmFscy5iZWdpbigpLCB2YWxzLmVuZCgpKSwgdmFscy5lbmQoKSk7CiAgICAKICAgIEYoaSwgMSwgbikgewogICAgICAgIGFbaV0gPSBsb3dlcl9ib3VuZCh2YWxzLmJlZ2luKCksIHZhbHMuZW5kKCksIGFbaV0pIC0gdmFscy5iZWdpbigpICsgMTsKICAgIH0KICAgIGlkID0gdmFscy5zaXplKCk7Cn0KCmludCBmW2Fyc107CnZvaWQgc29sdmUoKSB7CiAgICBjaW4gPj4gbjsKICAgIEYoaSwgMSwgbikgY2luID4+IGFbaV07CiAgICBjb21wcmVzcygpOwogICAgaW50IHJlcyA9IDA7CiAgICBGKGksIDEsIG4pIHsKICAgICAgICBmW2ldID0gZ2V0KGFbaV0gLSAxKSArIDE7CiAgICAgICAgZltpXSAlPSBtb2Q7CiAgICAgICAgdXBkKGFbaV0sIGZbaV0pOwogICAgICAgIHJlcyA9IChyZXMgKyBmW2ldKSAlIG1vZDsKICAgIH0KICAgIGNvdXQgPDwgcmVzOwoKfQpzaWduZWQgbWFpbigpIHsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKDApOyBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKICAgIGludCB0ID0gMTsKICAgIC8vIGNpbiA+PiB0OwogICAgd2hpbGUodC0tKSBzb2x2ZSgpOwoKCiAgICByZXR1cm4gMDsKfQ==