#include <bits/stdc++.h>
using namespace std;
int const mod = 1e9 + 7;
long long t[4000004], N = 1e6 + 1;
long long getsum(int v, int tl, int tr, int l, int r) {
  if (l > r) return 0;
  if (l == tl && r == tr) return t[v];
  int tm = (tl + tr) / 2;
  return getsum(v * 2, tl, tm, l, min(r, tm)) +
         getsum(v * 2 + 1, tm + 1, tr, max(l, tm + 1), r);
}
void update(int v, int tl, int tr, int pos, long long x) {
  if (tl == tr) {
    t[v] = x;
  } else {
    int tm = (tl + tr) / 2;
    if (pos <= tm)
      update(v * 2, tl, tm, pos, x);
    else
      update(v * 2 + 1, tm + 1, tr, pos, x);
    t[v] = (t[v * 2] + t[v * 2 + 1]) % mod;
  }
}
int main() {
  long long n, x;
  cin >> n;
  for (int i = 0; i < n; i++) {
    cin >> x;
    long long sum = getsum(1, 0, N - 1, 0, x);
    update(1, 0, N - 1, x, (sum * x + x) % mod);
  }
  cout << t[1];
  return 0;
}
