배열 뒤집기
Time Limit: 0.5 SecMemory Limit: 1024 MiB

문제

이 문제는 투스텝 문제입니다.

준혁이는 크기의 배열 를 가지고 있다. 배열 의 각 원소는 또는 로만 이루어져 있다.

준혁이는 이 배열에 두 연산을 총합하여 정확히 회 해야 한다.

  • H : 번째 행에 있는 모든 원소를 뒤집는다. 즉 인 모든 에 대해 가 0이라면 1로, 1이라면 0으로 바꾼다.
  • V : 번째 열에 있는 모든 원소를 뒤집는다. 즉 인 모든 에 대해 가 0이라면 1로, 1이라면 0으로 바꾼다.

같은 연산을 여러 번 했다면, 그 연산을 한 횟수만큼 뒤집히게 된다.

준혁이는 배열에 연산을 한 이후 자리를 떴다. 준혁이의 지속된 문제 유출로 인해 분노한 성준이는 준혁이의 배열에 원하는 연산을 최대 회 추가로 하였다. 성준이가 연산을 회 할 수 있음에 유의하라.

다시 돌아온 준혁이는 성준이가 어떤 연산을 하였는지 알아내려고 한다. 준혁이를 도와 성준이가 연산을 하였다면 어떤 연산을 하였는지, 또는 연산을 하지 않았는지 구해보자.

입력

당신의 프로그램은 채점 데이터 하나당 총 두 번 실행된다. 당신은 하나의 소스코드에 두 가지 실행 과정을 모두 구현해야 한다.

모든 입력의 첫 줄에는 실행 단계를 나타내는 정수 가 주어진다.

만약 이라면 첫 번째 단계를 수행해야 하고, 라면 두 번째 단계를 수행하면 된다.

첫 번째 단계

첫 번째 단계에서는 배열에 연산을 정확히 회 해야 한다.

입력

둘째 줄에 이 주어진다.

셋째 줄부터 개의 줄에 걸쳐 번째 줄에 이 공백으로 구분되어 주어진다.

출력

개의 줄에 걸쳐 개의 연산을 출력한다.

번째 줄에 번째 연산 를 공백으로 구분하여 출력한다. (H,V)

두 번째 단계

두 번째 단계에서는 성준이가 추가로 한 연산을 확인해야 한다.

첫 번째 단계에서 주어진 배열에 준혁이가 한 개의 연산과 성준이가 한 연산이 적용된 배열을 라고 하자.

입력

둘째 줄에 이 주어진다.

셋째 줄부터 개의 줄에 걸쳐 번째 줄에 이 공백으로 구분되어 주어진다.

출력

첫째 줄에 성준이가 추가로 한 연산의 수 를 출력한다. ()

만약 이라면, 둘째 줄에 성준이가 한 연산 를 공백으로 구분하여 출력한다. (H,V)

노트

예제 설명:

첫 번째 단계의 개의 연산 이후 배열은 다음과 같이 변하게 된다.

성준이가 이 배열에 H 연산을 추가로 적용한 배열은 두 번째 단계의 입력으로 주어진다.

Example Input 1Not Graded
1
5
1 0 1 0 0
0 1 1 0 1
1 0 1 0 1
1 1 0 1 1
0 0 0 1 0
Example Output 1
H 1
H 2
V 2
V 1
H 5
Example Input 2Not Graded
2
5
1 0 0 1 1
1 0 1 0 1
0 1 1 0 1
0 0 0 1 1
0 0 1 0 1
Example Output 2
1
H 2