Scanf.scanf "%d" (fun n ->
    let x = Array.init n (fun _ -> Scanf.scanf " %d" (fun x -> x)) in 

    let extgcd x y =
        let rec eg r0 r1 a0 a1 b0 b1 =
            if r1 = 0 then a0 else
                let q1 = r0 / r1 in
                eg r1 (r0 mod r1) a1 (a0 - q1 * a1) b1 (b0 - q1 * b1)
        in
        eg x y 1 0 0 1
    in
    let inv x y = (* 1/x in mod y *)
        let c = extgcd x y in
        if c < 0 then c + y else c
    in
    let z = 1_000_000_000 + 7 in
    let ( -@) a b = (((a - b) mod z) + z) mod z in
    let ( +@) a b = (a + b) mod z in
    let ( *@) a b = (a * b) mod z in
    let ( /@) a b = a *@ inv b z in

    let fact n =
        let rec loop i acc =
            if i > n then acc else loop (i + 1) (acc *@ i)
        in
        loop 1 1
    in

    let f = fact (n - 1) in

    let rec loop i r acc =
        if i = n - 1 then acc +@ r *@ x.(i) else
            let d = f /@ (i + 1) in
            loop (i + 1) (r +@ d) (acc -@ d * x.(i))
    in
    loop 0 0 0 |> Printf.printf "%d\n"
)