#include using namespace std; #define PB push_back #define ZERO (1e-10) #define INF int(1e9+1) #define CL(A,I) (memset(A,I,sizeof(A))) #define DEB printf("DEB!\n"); #define D(X) cout<<" "<<#X": "<B&&A-ZERO pll; typedef vector vi; typedef pair ii; typedef vector vii; #define IN(n) int n;scanf("%d",&n); #define FOR(i, m, n) for (int i(m); i < n; i++) #define F(n) FOR(i,0,n) #define FF(n) FOR(j,0,n) #define FT(m, n) FOR(k, m, n) #define aa first #define bb second void ga(int N,int *A){F(N)scanf("%d",A+i);} #define MX 404 #define MK 11 #define MP(X,Y) ((X)*M+Y) struct ST{ int g[MX][MX],d[MX][1<0&&X<=N&&Y>0&&Y<=M) void kill(int x,int y,int *sx,int *sy,int n=4){ F(n)for(int X=x+sx[i],Y=y+sy[i];in(X,Y);X+=sx[i],Y+=sy[i])ADD(x,y,X,Y); } void rnd(int x,int y,int *sx,int *sy){ F(8)if(in(x+sx[i],y+sy[i]))ADD(x,y,x+sx[i],y+sy[i]); } void uns(int x,int y,char t){ if(t==75)return rnd(x,y,KX,KY); if(t==81)return kill(x,y,KX,KY,8); if(t==82)return kill(x,y,RX,RY); if(t==66)return kill(x,y,BX,BY); rnd(x,y,NX,NY); } int main(void){ scanf("%d%d",&N,&M),T.CLR(N*M); scanf("%d%d %c",&a,&b,&c),T.AC(MP(a-1,b-1)); IN(_)F(_)scanf("%d%d",&a,&b),T.AC(MP(a-1,b-1)); F(N)FF(M)uns(i+1,j+1,c); T.GO(); a=T.VL((1<<++_)-1); printf("%d\n",a