테니스
면접 대비시간 제한1초메모리 제한512 MB
n명의 선수에 대해 세 코트의 순위표가 주어질 때, 각 쌍의 경기가 열리는 코트를 정하고 코트별 경기 수와 선수별 승수를 구합니다.
문제
Mirko는 테니스를 아주 좋아합니다. 곧 명의 선수가 참가하는 중요한 대회가 열립니다. Mirko는 여러 해 동안 테니스 선수들을 조사해 왔고, 경쟁자들에 대한 다양한 통계를 모았습니다. 그는 잔디, 클레이, 하드 세 가지 코트에서 선수들의 실력을 평가했습니다. 구체적으로, 각 코트마다 선수들의 순위표를 만들었습니다. 순위표의 맨 앞이 가장 강한 선수이고, 맨 뒤가 가장 약한 선수입니다.
이 대회에서는 모든 선수가 다른 모든 선수와 정확히 한 번씩 경기를 합니다. 따라서 총 경기가 열립니다. 테니스 경기는 무승부로 끝나지 않으며, 경기가 열리는 코트에서 더 강한 선수가 이깁니다. 주최 측은 이 사실을 알고 있으므로, 승자가 그 코트 순위표에서 가장 높은 자리에 오르는 코트에서 각 경기를 치르기로 했습니다.
두 코트에서 승자의 순위가 같으면, 패자의 순위가 더 좋은 코트를 선택합니다. 그래도 같으면 번호가 작은 코트를 선택합니다.
각 코트에서 치러지는 경기 수와 각 선수의 승수를 구하세요.
입력
첫째 줄에 선수의 수 이 주어집니다. 선수들은 1부터 까지의 번호로 구분됩니다.
이어지는 세 줄 중 번째 줄에는 번째 코트의 순위표가 주어집니다. 가장 강한 선수부터 시작하는 1부터 까지 정수의 순열입니다.
출력
첫째 줄에 첫 번째, 두 번째, 세 번째 코트에서 치러진 경기 수를 출력합니다.
둘째 줄에는 1번부터 번 선수까지 각 선수의 승수를 출력합니다.
힌트
선수 1과 선수 2의 경기는 승자인 선수 1이 1위로 가장 좋은 순위를 가지므로 코트 2에서 치릅니다. 선수 1과 선수 3의 경기는 승자의 순위가 세 코트 모두 같지만, 패자는 코트 2에서 더 좋은 순위를 가집니다. 선수 2와 선수 3의 경기에서는 코트 1과 코트 3이 동점이므로 번호가 작은 코트 1을 선택합니다.