answers = []

def get_answer(n, m, gems_coordinate, operation_set, answers)
  visited_coordinate = []
  now = [10,10]
  operation_set.each do |ope|
    if ope[0] == "N"
      ope[1].times do
        now[1] += 1
        visited_coordinate << Marshal.load(Marshal.dump(now))
      end
    end
    if ope[0] == "E"
      ope[1].times do
        now[0] += 1
        visited_coordinate << Marshal.load(Marshal.dump(now))
      end
    end
    if ope[0] == "S"
      ope[1].times do
        now[1] += -1
        visited_coordinate << Marshal.load(Marshal.dump(now))
      end
    end
    if ope[0] == "W"
      ope[1].times do
        now[0] += -1
        visited_coordinate << Marshal.load(Marshal.dump(now))
      end
    end
  end
  gems_coordinate.each do |g|
    flag = false
    visited_coordinate.each do |v|
      flag = true if v[0] == g[0] && v[1] == g[1]
    end
    return answers << "NO" if flag == false
  end
  return  answers << "YES"
end


while true
  n = gets.to_i
  gems_coordinate = []
  operation_set = []
  break if n == 0
  n.times do
    array = gets.chomp.split(" ").map(&:to_i)
    x = array[0].to_i
    y = array[1].to_i
    gems_coordinate << [x, y]
  end
  m = gets.to_i
  m.times do
    array = gets.chomp.split(" ")
    x = array[0].to_s
    y = array[1].to_i
    operation_set << [x, y]
  end
  answers = get_answer(n, m, gems_coordinate, operation_set, answers)
end

answers.each do |ans|
  puts ans
end