//Dec 16, 2017 9:51:07 AM //Loki //package wc12; import java.util.*; public class MaxTransform { //static int a static ArrayList b;//=new ArrayList<>(); static int solve() { // Return the sum of S(S(A)) modulo 10^9+7. long sum=0; size=getSize(); // System.out.println(size); tree=new int[size]; fillTree(0,a.length-1,0); b=new ArrayList<>(); //for(int i=0;i1000000008) sum%=100000007; b.add(getSum(i, i+k)); //System.out.println(tmsss+" ------ "); } } //System.out.println(b); return (int) (sum%100000007); } public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); a = new int[n]; for(int a_i = 0; a_i < n; a_i++){ a[a_i] = in.nextInt(); } int result = solve(); System.out.println(result); in.close(); } static int a[]; static int tree[]; static int size; /*public static void main(String[] args) { size=getSize(); System.out.println(size); tree=new int[size]; fillTree(0,a.length-1,0); printTree(); Scanner s=new Scanner(System.in); while(true) { int sum=getSum(s.nextInt(),s.nextInt()); System.out.println("sum ==>"+sum); } }*/ private static int getSum(int rs, int re) { if(rs<0||re>a.length-1||rs>re) return -1; //System.out.println(rs+"<-Checking for range"+re); return getSumTree(rs,re,0,a.length-1,0); } private static int getSumTree(int rs, int re, int ts, int te,int idx) { //If tree range completely lies in array range if(ts>=rs&&te<=re) return tree[idx]; //If tree range completely lies outside the array range if(ts>re||te