let n, m, a = Scanf.scanf "%d %d %d" (fun x y z -> x, y, z);; let g = Array.make (n+1) [];; for i = 1 to m do let l, r, p = Scanf.scanf " %d %d %d" (fun x y z -> x-1, y, z) in g.(l) <- (r,p)::g.(l); done;; let inf = max_int / 4;; let dp1 = Array.make (n+1) (-inf);; let dp2 = Array.make (n+1) (-inf);; dp1.(0) <- 0;; for i = 0 to n-1 do dp2.(i+1) <- max dp2.(i+1) dp1.(i); dp2.(i+1) <- max dp2.(i+1) dp2.(i); List.iter (fun (r, p) -> dp1.(r) <- max dp1.(r) (dp1.(i) + p - a); dp1.(r) <- max dp1.(r) (dp2.(i) + p - a*2); ) g.(i); done;; Printf.printf "%d\n" (max (dp1.(n)+a) dp2.(n));;