Ruka

아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

스테판은 칠판에 분필로 그림을 그리는 로봇 팔을 프로그래밍하고 있다. 칠판은 표준 좌표평면이고, xx 좌표는 오른쪽으로 갈수록 커지고 yy 좌표는 위로 갈수록 커진다.

로봇 팔의 계획은 벡터 (x1,y1),(x2,y2),,(xN,yN)(x_1, y_1), (x_2, y_2), \ldots, (x_N, y_N) NN개를 순서대로 적은 배열이며, 모든 xix_iyiy_i는 짝수다. 로봇 팔은 점 (1,1)(1, 1)에서 출발해 NN번 움직이면서 계획을 실행한다. ii번째 단계에서는 현재 위치 (x,y)(x, y)에서 점 (x+xi,y+yi)(x + x_i, y + y_i)까지 분필을 곧게 움직인다. 그래서 로봇 팔이 칠판에 남기는 자국은 꺾인 선이고, 그 선분이 바로 주어진 벡터다.

스테판은 계획을 세우고 고치는 동안 분필이 좌표축을 몇 번 넘어가는지 궁금해한다. 계획이 바뀌는 과정을 시뮬레이션하고 스테판의 질문에 답하는 프로그램을 작성하라.

두 번째 예제에서 각 Q 명령을 처리하는 시점의 계획. 점선은 가장 최근에 바뀐 선분이다.

스테판이 계획을 NN줄짜리 텍스트 파일에 적어 두었다고 하자. ii번째 줄에는 벡터 (xi,yi)(x_i, y_i)가 적혀 있다. 처음에 커서는 파일의 첫 줄에 있다. 프로그램은 다음 명령을 시뮬레이션해야 한다.

  • B: 커서가 이전 줄로 올라간다. 이미 첫 줄에 있으면 아무 일도 일어나지 않는다.
  • F: 커서가 다음 줄로 내려간다. 이미 마지막 줄에 있으면 아무 일도 일어나지 않는다.
  • C nx ny: nxnxnyny는 짝수다. 커서가 있는 줄의 벡터를 (nx,ny)(nx, ny)로 바꾼다.
  • Q: 지금 계획이 그리는 꺾인 선이 좌표축을 몇 번 넘어가는지 출력한다. 꺾인 선이 원점을 지나가면 좌표축을 두 번 넘어간 것으로 센다.

입력

첫째 줄에 계획에 들어 있는 벡터의 개수 NN이 주어진다. 다음 NN개 줄 중 ii번째 줄에는 처음 계획의 ii번째 벡터를 이루는 두 짝수 xix_iyiy_i가 공백 하나로 구분되어 주어진다.

그다음 줄에는 시뮬레이션할 명령의 개수 MM이 주어진다. 다음 MM개 줄에는 명령이 한 줄에 하나씩 주어진다. 명령은 대문자 B, F, Q 중 하나이거나, 문제에서 설명한 짝수 nxnxnyny를 쓴 C nx ny 꼴이다.

출력

입력에 있는 Q 명령마다 그 결과를 한 줄에 하나씩 출력한다. 결과는 명령이 입력에 나온 순서대로 출력한다.

제한

  • 1N1000001 \le N \le 100000
  • 1M1000001 \le M \le 100000
  • 처음 계획의 모든 벡터와 C 명령이 주는 모든 새 벡터에서 xix_i, yiy_i, nxnx, nyny는 짝수이고 500-500 이상 500500 이하이다.