#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);
}
