w,h,n = 3.times.map { gets.to_i } dp = {} (1..w).each do |i| dp[i] = { includes: nil, excludes: nil } end n.times.map do s, k = gets.split.map(&:to_i) (1..w).each do |i| if i == s (dp[i][:excludes] ||= []) << k else (dp[i][:includes] ||= []) << k end end end sum = dp.inject(0) do |s, (k,v)| if v[:excludes] s + h - (v[:excludes] - (v[:includes] || [])).uniq.size else s + v[:includes].uniq.size end end puts sum