using System;

namespace Volume20_2000
{
    class Program
    {
        static void Main(string[] args)
        {
            var map = new JewelryMap();
            var robo = new MyRobot(map);

            string jewelryCount;
            while((jewelryCount = Console.ReadLine()) != "0")
            {
                for(int i = 0; i < Convert.ToInt32(jewelryCount); i++)
                {
                    var place = Console.ReadLine().Split(' ');
                    map.SetJewelry( new Position( Convert.ToInt32(place[0]), Convert.ToInt32(place[1] ) ) );
                }

                string moveCount = Console.ReadLine();
                for (int i = 0; i < Convert.ToInt32(moveCount); i++)
                {
                    var move = Console.ReadLine().Split(' ');
                    switch (move[0])
                    {
                        case "N": robo.Move(Direction.North, Convert.ToInt32(move[1])); break;
                        case "S": robo.Move(Direction.South, Convert.ToInt32(move[1])); break;
                        case "E": robo.Move(Direction.East, Convert.ToInt32(move[1])); break;
                        case "W": robo.Move(Direction.West, Convert.ToInt32(move[1])); break;
                        default: throw new Exception();
                    }
                }

                Console.WriteLine(map.Remains == 0 ? "Yes" : "No");

                map.Reset();
                robo.Reset();
            }
        }

        enum Direction
        {
            North,
            South,
            East,
            West
        }
        struct Position
        {
            public int X;
            public int Y;
            public Position(int x, int y)
            {
                X = x;
                Y = y;
            }
            public static Position operator+ (Position pos1, Position pos2)
            {
                return new Position(pos1.X + pos2.X, pos1.Y + pos2.Y);
            }
        }
        class JewelryMap
        {
            private int maxX = 21;
            private int maxY = 21;
            private bool[,] map;
            
            public int Remains
            {
                get;
                protected set;
            }
            
            public JewelryMap()
            {
                map = new bool[maxY, maxX];
            }
            public void SetJewelry(Position pos)
            {
                if (map[pos.Y, pos.X]) return;

                map[pos.Y, pos.X] = true;
                Remains++;
            }
            public bool GetJewelry(Position pos)
            {
                if (!map[pos.Y, pos.X]) return false;

                map[pos.Y, pos.X] = false;
                Remains--;

                return true;
            }
            public Position SpawnPosition()
            {
                return new Position(maxX / 2, maxY / 2);
            }
            public void Reset()
            {
                Remains = 0;
                map = new bool[maxY, maxX];
            }
        }
        class MyRobot
        {
            public Position Position
            {
                get;
                protected set;
            }
            public int Count
            {
                get;
                protected set;
            }
            protected JewelryMap Map
            {
                get;
                set;
            }

            public MyRobot(JewelryMap map)
            {
                Position = map.SpawnPosition();
                Map = map;
            }
            public void Move(Direction dir, int value)
            {
                Position vec = new Position(0,0);
                switch(dir)
                {
                    case Direction.North:   vec.Y = 1;  break;
                    case Direction.South:   vec.Y = -1; break;
                    case Direction.East:    vec.X = 1;  break;
                    case Direction.West:    vec.X = -1; break;
                }
                for(var i = 0; i < value; i++)
                {
                    Position += vec;
                    Check();
                }
            }
            protected void Check()
            {
                if(Map.GetJewelry(Position)) Count++;
            }
            public void Reset()
            {
                Position = Map.SpawnPosition();
                Count = 0;
            }
        }
    }
}

Measured memory_bytes: 9336