import java.io.*;
import java.util.*;

public class Fence {
  static final int DIM = 100;
  
  public static void main(String[] argv)
  throws Exception {
    
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
								 //new FileInputStream("smallexample.in")));

    int N = Integer.parseInt(in.readLine().trim());

    for(int dataSet = 1;dataSet <= N; dataSet++){
      int x, y, z;

      {
	StringTokenizer t = new StringTokenizer(in.readLine());
	x = Integer.parseInt(t.nextToken());
	y = Integer.parseInt(t.nextToken());
	z = Integer.parseInt(t.nextToken());
      }

      // default to false in java
      // xlines are parallel to x axis
      boolean[][] xlines, ylines;
      xlines = new boolean[DIM+1][DIM];
      ylines = new boolean[DIM+1][DIM];
      
      for(int moven=0;moven<z;moven++){
	StringTokenizer t = new StringTokenizer(in.readLine());
	char dir = t.nextToken().charAt(0);
	int dist = Integer.parseInt(t.nextToken());
	int inc;

	switch (dir){
	case 'N':
	  for(int i=0;i<dist;i++){
	    ylines[x][y] = true;
	    y++;
	  }
	  break;
	case 'S':
	  for(int i=0;i<dist;i++){
	    y--;
	    ylines[x][y] = true;
	  }
	  break;
      
	case 'E':
	  for(int i=0;i<dist;i++){
	    xlines[y][x] = true;
	    x++;
	  }
	  break;
	case 'W':
	  for(int i=0;i<dist;i++){
	    x--;
	    xlines[y][x] = true;
	  }
	  break;
	default:
	  System.err.println("illegal dir "+dir);
	  System.exit(1);
	}
      }

      System.out.println("Data Set "+dataSet+": "+colorAndCount(xlines,
								ylines)+
			 " square feet.");
    }
    System.out.println("End of Output");
  }

  static int colorAndCount(boolean[][] xlines, 
			   boolean[][] ylines){
    boolean[][] visited = new boolean[DIM][DIM];

    //printLines(xlines, ylines);
    
    for(int i=0;i<DIM;i++){
      if(!xlines[0][i])
	traverse(i, 0, xlines, ylines, visited);
      if(!xlines[DIM][i])
	traverse(i, DIM-1, xlines, ylines, visited);
      if(!ylines[0][i])
	traverse(0, i, xlines, ylines, visited);
      if(!ylines[DIM][i])
	traverse(DIM-1, i, xlines, ylines, visited);
    }

    int sf = 0;

    for(int i=0;i<DIM;i++)
      for(int j=0;j<DIM;j++)
	if(!visited[i][j])
	  sf++;

    return sf;
  }

  static void traverse(int x, int y, boolean[][] xlines, boolean[][] ylines,
		       boolean[][] visited){
    visited[x][y] = true;

    if(islegal(x-1, y) && !visited[x-1][y] &&
       !ylines[x][y])
      traverse(x-1, y, xlines, ylines, visited);
    if(islegal(x+1, y) && !visited[x+1][y] &&
       !ylines[x+1][y])
      traverse(x+1, y, xlines, ylines, visited);
    if(islegal(x, y-1) && !visited[x][y-1] &&
       !xlines[y][x])
      traverse(x, y-1, xlines, ylines, visited);
    if(islegal(x, y+1) && !visited[x][y+1] &&
       !xlines[y+1][x])
      traverse(x, y+1, xlines, ylines, visited);
  }

  static boolean islegal(int x, int y){
    return x>=0 && x < DIM && y>=0 && y< DIM;
  }

  static void printLines(boolean[][] xlines, boolean[][] ylines){
    System.out.print(' ');
    for(int x=0;x<DIM;x++)
      if(xlines[DIM][x])
	System.out.print("- ");
      else
	System.out.print("  ");
    System.out.println();

    for(int y=DIM-1;y>=0;y--){
      for(int x=0;x<DIM+1;x++)
	if(ylines[x][y])
	  System.out.print("| ");
	else
	  System.out.print("  ");
      System.out.println();

      System.out.print(' ');
      for(int x=0;x<DIM;x++)
	if(xlines[y][x])
	  System.out.print("- ");
	else
	  System.out.print("  ");
      System.out.println();
    }
  }
}


      

      
      

	
