import Data.List

main = interact $ unlines . map (show' . misterious_gems) . read' . lines
 where
  read' ("0":_) = [] 
  read' (n:xs) = (read_gems gems, read_orders orders) : read' xs''
   where
    (gems, (m:xs')) = splitAt (read n) xs
    (orders, xs'') = splitAt (read m) xs'
    read_gems = map (map read . words)
    read_orders = concatMap ((\[d,l] -> resolve (d, read l)) . words)
    resolve (d,l) = replicate l (d,1)
  show' p = case p of {True -> "Yes"; False -> "No"}

misterious_gems :: ([[Int]], [(String,Int)]) -> Bool
misterious_gems (gems, orders) = null $ gems \\ (scanl move [10,10] orders)
 where move [x,y] (d,l) = case d of {"N"->[x,y+l]; "E"->[x+l,y]; "S"->[x,y-l]; "W"->[x-l,y]}