import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
static int mx=(int)2<<29;//29;
static int b=1000000000+7;
public static void main(String[] args) {
int n=0;
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
try{n=Integer.parseInt(bf.readLine());}catch(Exception e){};
int [] a=new int[n];
Map<Integer,Integer> m = new Hashtable<Integer, Integer>();
Map<Integer,Integer> s = new Hashtable<Integer, Integer>();
try{
String[] aa=bf.readLine().split(" ");
for(int i=0;i<n;i++){a[i]=Integer.parseInt(aa[i]);}
while(n-->0){
Integer t=a[n];
if(!m.containsKey(t))m.put(t,0);
Integer oldm=m.get(t);
Integer su=0;
Integer z=t+0;
/*get s(t)*/while(z<mx){
if(!s.containsKey(z))s.put(z,0);
if(!m.containsKey(z))m.put(z,0);
su=(su+(s.get(z)+m.get(z))%b)%b;
z+=z&(z^(z-1));
}
Integer newm=(int)(((su+1L)*t)%b);
Integer up=(newm+b-oldm)%b;
m.put(t,newm+0);
/*update s of parents of t */z=t;do{
z=z&(z-1);
if(!s.containsKey(z))s.put(z,0);
s.put(z,(s.get(z)+up)%b);
}while(z>0);
}
System.out.println(s.get((Integer)0));
}catch(Exception e){};
}
}