N, M = gets.split.map(&:to_i) L = gets.split.map(&:to_i) lake = L.tally L << Float::INFINITY Q = M.times.map { gets.split.map(&:to_i) } ans = 0 Q.each do |f, b, w| idx = L.bsearch_index { |l| l >= f } if lake[f] ans += w else cur_power = b if L[idx] != Float::INFINITY d = L[idx] - f if cur_power < w - d cur_power = w - d end end if idx - 1 >= 0 d = f - L[idx - 1] if cur_power < w - d cur_power = w - d end end ans += cur_power end end puts ans