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