n, m = gets.chomp.split.map(&:to_i)
tree = gets.chomp.split.map(&:to_i)
tree.unshift 0

lr = (0..n).to_a
m.times{
    l, r = gets.chomp.split.map(&:to_i)
    lr[r] = l if lr[r] > l
    }
(n - 1).downto(0){|i| lr[i] = [lr[i + 1], lr[i]].min}

dp = [0]
1.upto(n){|i| dp[i] = [dp[i - 1], dp[lr[i] - 1] + tree[i]].max}
puts dp.last
