데스스타

시간 제한1초메모리 제한256 MB

요약
쌍별 비트 AND가 행렬의 대각선 밖 값과 일치하는 사전순으로 가장 앞선 수열을 복원합니다.
난이도

보통10점 중 4점

유형
비트 연산
정답자
아직 제출이 없습니다

문제

젊은 제다이 이반은 데스스타에 침투해 파괴하는 임무를 맡았다. 데스스타를 파괴하려면 길이 NN의 음이 아닌 정수 수열 a1,a2,…,aNa_1, a_2, \dots, a_N이 필요하지만 이반에게는 그 수열이 없다. 대신 오랜 친구 다스베이더에게 받은 쪽지가 있고, 쪽지에는 수열이 만족해야 하는 조건이 적혀 있다.

쪽지에 적힌 것은 크기 NN의 정사각 행렬이다. ii번째 행 jj번째 열의 값 mijm_{ij}는 aia_i와 aja_j에 비트 and 연산을 수행한 결과다. 광선검에 쪽지가 상해서 주 대각선의 값은 읽을 수 없고, 입력에서는 0으로 주어진다.

조건을 만족하는 수열은 여러 개일 수 있고, 적어도 하나는 항상 존재한다. 그중 사전순으로 가장 앞서는 수열을 복원해 이반을 돕자.

입력

첫 줄에 행렬의 크기 NN (1≤N≤10001 \le N \le 1000)이 주어진다.

다음 NN개의 줄에는 행렬의 각 행이 주어진다. 각 줄은 공백으로 구분된 NN개의 정수 mijm_{ij} (0≤mij≤1090 \le m_{ij} \le 10^9)로 이루어진다. 주 대각선의 값 miim_{ii}는 모두 0이고, i≠ji \ne j인 위치는 mij=mjim_{ij} = m_{ji}를 만족한다. 조건을 만족하는 수열이 적어도 하나 존재하며, 그 수열의 원소는 모두 10910^9 이하이다.

출력

조건을 만족하는 수열 중 사전순으로 가장 앞서는 것을 한 줄에 출력한다. NN개의 정수를 공백 하나로 구분한다.

사전순 비교는 첫 번째 원소부터 차례로 값을 비교해, 처음으로 값이 달라지는 자리에서 더 작은 쪽을 앞선 것으로 본다.

예제5

  1. 예제 1

    입력
    3
    0 1 1
    1 0 1
    1 1 0
    
    예상 출력
    1 1 1
    
  2. 예제 2

    입력
    5
    0 0 1 1 1
    0 0 2 0 2
    1 2 0 1 3
    1 0 1 0 1
    1 2 3 1 0
    
    예상 출력
    1 2 3 1 3
    
  3. 예제 3

    입력
    1
    0
    
    예상 출력
    0
    
  4. 예제 4

    입력
    2
    0 0
    0 0
    
    예상 출력
    0 0
    
  5. 예제 5

    입력
    2
    0 1000000000
    1000000000 0
    
    예상 출력
    1000000000 1000000000