let () = Scanf.scanf "%d\n" @@ fun n -> let lst = ref (Array.to_list (Array.init n @@ fun _ -> Scanf.scanf "%d " @@ fun d -> d)) in for i = 0 to n - 2 do let (_,nowlst) = List.fold_left (fun (bfr, lst) x -> (x, ((bfr+x) mod 1000000007) :: lst)) (List.hd !lst, []) (List.tl !lst) in lst := nowlst; done; Printf.printf "%d\n" ((List.hd (!lst)) mod 1000000007)