#include <iostream>
#include <vector>
#include <set>
#include <map>
using namespace std;
const int MOD = 1e9 + 7;
int main() {
cin.tie(0);
ios_base::sync_with_stdio(0);
int n;
cin >> n;
vector<int> x(n);
set<int> x_set;
map<int, int> x_map_idx;
for(int &val: x){
cin >> val;
x_set.insert(val);
}
for(int val: x_set){
x_map_idx[val] = x_map_idx.size() + 1;
}
for(int &val: x){
val = x_map_idx[val];
}
vector<int> BITS(n + 1);
auto update = [&](int pos, int val){
while(pos < BITS.size()){
BITS[pos] = (BITS[pos] + val) % MOD;
pos += pos & -pos;
}
};
auto query = [&](int pos){
int ans = 0;
while(pos){
ans = (ans + BITS[pos]) % MOD;
pos -= pos & -pos;
}
return ans;
};
int ans = 0;
for(auto &val: x){
int end_with_val_cnt = query(val - 1) + 1;
ans = (ans + end_with_val_cnt) % MOD;
update(val, end_with_val_cnt);
}
cout << ans << '\n';
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c2V0PgojaW5jbHVkZSA8bWFwPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY29uc3QgaW50IE1PRCA9IDFlOSArIDc7CmludCBtYWluKCkgewoJY2luLnRpZSgwKTsKCWlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CgkKCWludCBuOwoJY2luID4+IG47Cgl2ZWN0b3I8aW50PiB4KG4pOwoJc2V0PGludD4geF9zZXQ7CgltYXA8aW50LCBpbnQ+IHhfbWFwX2lkeDsKCQoJZm9yKGludCAmdmFsOiB4KXsKCQljaW4gPj4gdmFsOwoJCXhfc2V0Lmluc2VydCh2YWwpOwoJfQoJZm9yKGludCB2YWw6IHhfc2V0KXsKCQl4X21hcF9pZHhbdmFsXSA9IHhfbWFwX2lkeC5zaXplKCkgKyAxOwoJfQoJZm9yKGludCAmdmFsOiB4KXsKCQl2YWwgPSB4X21hcF9pZHhbdmFsXTsKCX0KCQoJdmVjdG9yPGludD4gQklUUyhuICsgMSk7CglhdXRvIHVwZGF0ZSA9IFsmXShpbnQgcG9zLCBpbnQgdmFsKXsKCQl3aGlsZShwb3MgPCBCSVRTLnNpemUoKSl7CgkJCUJJVFNbcG9zXSA9IChCSVRTW3Bvc10gKyB2YWwpICUgTU9EOwoJCQlwb3MgKz0gcG9zICYgLXBvczsKCQl9Cgl9OwoJCglhdXRvIHF1ZXJ5ID0gWyZdKGludCBwb3MpewoJCWludCBhbnMgPSAwOwoJCXdoaWxlKHBvcyl7CgkJCWFucyA9IChhbnMgKyBCSVRTW3Bvc10pICUgTU9EOwoJCQlwb3MgLT0gcG9zICYgLXBvczsKCQl9CgkJcmV0dXJuIGFuczsKCX07CgkKCWludCBhbnMgPSAwOwoJZm9yKGF1dG8gJnZhbDogeCl7CgkJaW50IGVuZF93aXRoX3ZhbF9jbnQgPSBxdWVyeSh2YWwgLSAxKSArIDE7CgkJYW5zID0gKGFucyArIGVuZF93aXRoX3ZhbF9jbnQpICUgTU9EOwoJCXVwZGF0ZSh2YWwsIGVuZF93aXRoX3ZhbF9jbnQpOwoJfQoJCgljb3V0IDw8IGFucyA8PCAnXG4nOwoJcmV0dXJuIDA7Cn0=