아인타, 빈타, 그리고 씬타

시간 제한1.5초메모리 제한1024 MB

요약
A로 B와 C의 원소를 덮어써서 두 수열의 서로 다른 값 집합이 최대한 겹치게 만들고, 그 집합을 출력한다.
난이도

보통10점 중 6점

유형
그리디, 정렬, 해시맵, 이분 탐색
정답자
아직 제출이 없습니다

문제

Ainta, Binta, Cinta는 각각 길이 nn 의 수열을 가지고 있다. Ainta가 가진 수열은 A_1,A_2,…,A_nA\_1, A\_2, \ldots, A\_n, Binta가 가진 수열은 B_1,B_2,…,B_nB\_1, B\_2, \ldots, B\_n 이고, Cinta가 가진 수열은 C_1,C_2,…,C_nC\_1, C\_2, \ldots, C\_n 이다.

심심한 Ainta는, Binta의 수열에 이상한 장난을 치기로 했다. Ainta는 Binta의 수열의 어떤 원소를, 같은 인덱스를 가진 자신의 원소로 바꿀 수 있다. 즉, Ainta는 1≤i≤n1 \le i \le n 을 골라, B_iB\_i 를 A_iA\_i 로 바꾸는 연산을 진행할 수 있다. B_iB\_i 와 A_iA\_i 를 교환하는 것이 아니라 B_iB\_i 에 A_iA\_i 를 덮어쓰는 것임에 유의하자. 이러한 연산은 한 번 이상 수행할 수도 있고 전혀 수행하지 않을 수도 있다.

Ainta는, Cinta의 수열에도 같은 방식으로 장난을 쳤다. (Binta의 수열에 친 장난과는 독립이다. 즉, B_1B\_1 을 A_1A\_1 로 덮어썼다고 C_1C\_1 에도 똑같은 장난을 칠 필요는 없다.)

다음 날 Binta와 Cinta는 각각 자신이 가진 수열을 정렬한 후, 모든 중복 원소를 제거한다. 예를 들어, 현재 수열이 B=\[3,2,1,3,2]B = \[3, 2, 1, 3, 2] 이면, 이 수열을 정렬하여 B=\[1,2,2,3,3]B = \[1, 2, 2, 3, 3] 을 만들고, 중복을 제거하여 B=\[1,2,3]B = \[1, 2, 3] 을 만든다. 이 작업을 수행한 후 둘이 가진 수열이 일치하면, Binta와 Cinta는 크게 감동하여 kk 시간동안 오열하기 시작한다. 이 때 kk 는 중복을 제거한 이후의 수열의 길이이다.

Ainta는 Binta와 Cinta에게 최대한의 감동을 주기 위해 kk 를 최대화하는 장난을 치려고 한다. 가능한 kk 의 최댓값과, 그 최댓값을 얻을 수 있는 해를 출력하여라. 이 때 출력하는 해는, Binta와 Cinta가 중복을 제거한 후 얻게 된 수열을 출력하면 된다. k>0k > 0 인 답은 항상 존재한다.

입력

첫 번째 줄에 수열의 길이 nn 이 주어진다. (1≤n≤5,0001 \le n \le 5\\,000)

두 번째 줄에 A_1,A_2,…,A_nA\_1, A\_2, \ldots, A\_n 이 주어진다. (1≤A_i≤10,0001 \le A\_i \le 10\\,000)

세 번째 줄에 B_1,B_2,…,B_nB\_1, B\_2, \ldots, B\_n 이 주어진다. (1≤B_i≤10,0001 \le B\_i \le 10\\,000)

네 번째 줄에 C_1,C_2,…,C_nC\_1, C\_2, \ldots, C\_n 이 주어진다. (1≤C_i≤10,0001 \le C\_i \le 10\\,000)

출력

첫 번째 줄에 가능한 최대 kk 를 출력한다.

두 번째 줄에 kk 개의 정수로, Binta와 Cinta가 최종적으로 얻게 될 수열을 출력하라. 가능한 답이 여러가지면 그 중 하나만 출력하여도 된다.

예제1

  1. 예제 1

    입력
    3
    1 1 1
    2 3 4
    5 4 2
    
    예상 출력
    3
    1 2 4