func_code_string: #include <bits/stdc++.h>   using namespace std;   const long long A = 100000000000000LL, N = 10000, M = 1000001;   long long i, j, n, m, a, t[M * 4];   void modi(long long v, long long l, long long r, long long g, long long h) {     if (l == r) {       t[v] = h % 1000000007;       return;     }     long long mid = (l + r) / 2;     if (g <= mid)       modi(v * 2, l, mid, g, h);     else       modi(v * 2 + 1, mid + 1, r, g, h);     t[v] = (t[v * 2] + t[v * 2 + 1]) % 1000000007;   }   long long get(long long v, long long l, long long r, long long _l,                 long long _r) {     if (l > r || _l > _r) return 0;     if (l == _l && r == _r) return t[v];     long long mid = (l + r) / 2;     return get(v * 2, l, mid, _l, min(mid, _r)) +            get(v * 2 + 1, mid + 1, r, max(mid + 1, _l), _r);   }   int main() {     cin >> n;     for (i = 0; i < n; i++) {       cin >> a;       modi(1, 1, M, a, get(1, 1, M, 1, a) * a + a);     }     cout << get(1, 1, M, 1, M);   }   