N, M, X = gets.split(" ").map{|s| s.to_i} A = [] Max = Hash.new([-Float::INFINITY, -1]) N.times { a, b = gets.split(" ").map{|s| s.to_i} A << a Max[b] = [a, A.length-1] if a > Max[b][0] } k = gets.to_i c = gets.split(" ").map{|s| s.to_i} Max.values.each {|a, i| A[i] += X } A.sort! cnt = [0] 1.upto(c.max) {|i| cnt << cnt[-1] + A[N-i] } total = 0 c.each {|i| total += cnt[i] } puts total