3190. 뱀
from collections import deque
n=int(input()) #NxN
dir=[[0 for j in range(n)] for i in range(n)]
apple= int(input()) #사과 개수
for i in range(apple): #사과 위치
ax,ay=map(int,input().split())
dir[ax-1][ay-1]=1
m=int(input()) #뱀 방향변환 횟수
ls=deque()
for i in range(m):
ls.append(input().split())
cnt=0
brk=0 #break 여부
dx,dy=0,0
dix = 1 #방향 인덱스 (시작 : 오른쪽)
while ls and brk==0:
#초, 방향
s,d=ls.popleft()
#위, 오, 아래, 왼
x=[-1,0,1,0]
y=[0,1,0,-1]
dl=[] #뱀의 몸이 위치한 모든 곳
for i in range(int(s)-cnt):
cnt+=1
nx=dx+ x[dix]
ny=dy+ y[dix]
if nx<0 or nx>=n or ny<0 or ny>=n:
brk=1
break
if (nx,ny) in dl: #이동위치에 뱀의 몸이 있으면
brk=1
break
if dir[nx][ny]==1: #사과가 있으면
dir[nx][ny]=0 #사과는 없어지고
dl.append((dx,dy)) #발
dl.append((nx,ny)) #머리
else: #사과가 없으면
if dl:
dl.pop(0) #발위치 없앰
#for문이 break되지 않으면
dx=nx #이동
dy=ny
#방향 인덱스
if d=="L": #왼쪽
dix-=1
if dix<0:
dix=3
elif d=="D": #오른쪽
dix+=1
if dix>3:
dix=0
if brk==0: #에러 없이 끝나면
if dix==0:
cnt+=dx+1
elif dix==1:
cnt+=(n-dy)
elif dix==2:
cnt+=(n-dx)
elif dix==3:
cnt+=dy+1
print(cnt)
from collections import deque
n=int(input()) #NxN
dir=[[0 for j in range(n)] for i in range(n)]
apple= int(input()) #사과 개수
for i in range(apple): #사과 위치
ax,ay=map(int,input().split())
dir[ax-1][ay-1]=1
m=int(input()) #뱀 방향변환 횟수
ls=deque()
for i in range(m):
ls.append(input().split())
cnt=0
brk=0 #break 여부
dx,dy=0,0
dix = 1 #방향 인덱스 (시작 : 오른쪽)
while ls and brk==0:
#초, 방향
s,d=ls.popleft()
#위, 오, 아래, 왼
x=[-1,0,1,0]
y=[0,1,0,-1]
dl=[] #뱀의 몸이 위치한 모든 곳
for i in range(int(s)-cnt):
cnt+=1
nx=dx+ x[dix]
ny=dy+ y[dix]
if nx<0 or nx>=n or ny<0 or ny>=n:
brk=1
break
if (nx,ny) in dl: #이동위치에 뱀의 몸이 있으면
brk=1
break
if dir[nx][ny]==1: #사과가 있으면
dir[nx][ny]=0 #사과는 없어지고
dl.append((dx,dy)) #발
dl.append((nx,ny)) #머리
else: #사과가 없으면
if dl:
dl.pop(0) #발위치 없앰
#for문이 break되지 않으면
dx=nx #이동
dy=ny
#방향 인덱스
if d=="L": #왼쪽
dix-=1
if dix<0:
dix=3
elif d=="D": #오른쪽
dix+=1
if dix>3:
dix=0
if brk==0: #에러 없이 끝나면
if dix==0:
cnt+=dx+1
elif dix==1:
cnt+=(n-dy)
elif dix==2:
cnt+=(n-dx)
elif dix==3:
cnt+=dy+1
print(cnt)