open Printf
open Scanf

let prn s x = printf "%s %d\n" s x

let num () = scanf "%d" (fun x -> x)
let num1 () = scanf "%d\n" (fun x -> x)
let num2 () = scanf "%d %d\n" (fun x y -> (x, y))
let num3 () = scanf "%d %d %d\n" (fun x y z -> (x, y, z))

let numN n =
  let rec loop rs k =
    if k=n then
      List.rev rs
    else
      let x = scanf " %d" (fun x -> x) in
      loop (x::rs) (k+1)
  in
  if n=0 then
    []
  else if n=1 then
    [num ()]
  else
    loop [num ()] 1

let () =
  let m = Int64.of_int 1000000007 in
  let n = num1 () in
  let xs = List.map Int64.of_int (numN n) in
  let s = List.fold_left
            (fun s x -> (Int64.add s x)) Int64.zero xs in
  let s2 = Int64.mul s s in
  let d =
    List.fold_left
      (fun s x -> (Int64.add s (Int64.mul x x)))
      Int64.zero xs
  in
  let r = Int64.div (Int64.sub s2 d) (Int64.of_int 2) in
  let r = Int64.rem r m in
  printf "%d\n" (Int64.to_int r)

