체스판

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

문제

아주 큰 체스판 위에 같은 색의 말들이 여러 개 놓여 있다. 어떤 말이 한 번의 이동으로 어떤 칸에 도달할 수 있을 때, 그 말이 해당 칸을 잡는다고 한다. 구체적으로는 다음 두 조건을 모두 만족해야 한다.

  • 도착 칸에 다른 말이 놓여 있지 않다.
  • 퀸, 룩, 비숍의 경우 출발 칸과 도착 칸 사이의 경로에 다른 말이 하나도 없다.

말은 자기가 서 있는 칸은 잡지 못한다. 한 칸을 여러 말이 동시에 잡을 수도 있다.

각 말은 표준 체스 규칙대로 움직인다.

  • K(킹): 인접한 8방향으로 한 칸 이동한다.
  • S(나이트): L자 모양(2칸 후 1칸)으로 뛰며, 다른 말에 막히지 않는다.
  • W(룩): 가로나 세로로 원하는 만큼 미끄러진다.
  • G(비숍): 대각선으로 원하는 만큼 미끄러진다.
  • H(퀸): 가로, 세로, 대각선으로 원하는 만큼 미끄러진다.

모든 말에 대해 그 말이 잡는 칸의 개수를 구하여라.

입력

첫째 줄에 두 정수 nnmm이 공백 하나로 구분되어 주어진다 (1n2000001 \le n \le 200\,000, 1m1091 \le m \le 10^9). nn은 말의 개수, mm은 정사각형 체스판의 한 변의 길이이다.

다음 nn개의 줄에는 각각 F x y 형식으로 말의 정보가 주어진다. F는 말의 종류를 나타내는 문자이다.

  • G - 비숍
  • H - 퀸
  • K - 킹
  • S - 나이트
  • W - 룩

(x,y)(x, y)는 말의 위치이다 (1x,ym1 \le x, y \le m). 같은 위치에 두 개 이상의 말이 놓이는 경우는 없다.

출력

nn개의 줄을 출력한다. ii번째 줄에는 입력에서 ii번째 말이 잡는 칸의 개수를 정수 하나로 출력한다.

힌트

위 그림은 예제의 체스판을 나타낸다. 서로 다른 모양의 선은 미끄러지는 말들이 잡는 칸을 나타내며, 큰 점은 나이트가 도달할 수 있는 칸을 나타낸다.