Scanf.scanf "%d" (fun n -> let a = Array.init (n + 1) (fun _ -> Scanf.scanf " %d" (fun a -> a)) in let b = Array.init (n + 1) (fun _ -> Scanf.scanf " %d" (fun b -> b)) in let z = 1_000_000_007 in let ( +@) a b = (a + b) mod z in let ( *@) a b = (a * b) mod z in let rec loop i bsum acc = if i < 0 then acc else let bsum = bsum +@ b.(n - i) in let acc = acc +@ a.(i) *@ bsum in loop (i - 1) bsum acc in loop n 0 0 |> Printf.printf "%d\n" )