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