새로운 주 나누기

정점 1과 n을 서로 다른 편에 두고 그래프를 둘로 나눌 때, 잘린 간선들의 가중치를 XOR한 값이 최대가 되도록 만드는 문제이다.

어려움8그래프최소 신장 트리비트 연산그리디아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

테헤란 주를 알보르즈 주와 뉴테헤란 주 두 개로 나누기로 했다. 옛 테헤란 주에는 도시가 많이 있고, 각 도시는 두 새 주 가운데 한 곳에 속한다. 어느 쪽에 넣을지는 두 주 사이를 오가는 이동의 안전도로 판단한다.

아미르는 옛 테헤란 주의 지도를 받았다. 지도에는 도시와 도로, 그리고 도로마다 정해진 안전도가 적혀 있다. 아미르는 모든 도시를 뉴테헤란과 알보르즈 중 한 곳에 배정한다. 두 도시는 이미 정해져 있다. 테헤란은 뉴테헤란에, 카라지는 알보르즈에 속한다. 한 주가 연결되어 있지 않아도 되므로, 같은 주에 속한 도시라도 서로 오갈 수 없을 수 있다.

아미르는 가장 안전한 분할을 원한다. 분할의 안전도는 드론으로 측정한다. 드론은 두 주 사이를 날면서, 양 끝 도시가 서로 다른 주에 속하는 양방향 도로를 모두 정확히 한 번씩 지난다. 도로를 지날 때마다 그 도로의 안전도를 읽어 전체 안전도를 갱신한다. 도로의 안전도는 센서가 60비트 이진수로 저장하고, 드론도 전체 안전도를 60비트 이진수로 저장한다. 안전도가 x60x59x1x_{60}x_{59}\dots x_1인 도로를 지나면, 전체 안전도의 ii번째 비트는 xix_i가 1일 때 뒤집히고 아니면 그대로 남는다. 드론이 비행을 마쳤을 때의 전체 안전도가 그 분할의 안전도다. 전체 안전도는 0에서 시작하므로, 두 주를 잇는 도로가 하나도 없으면 값이 바뀌지 않아 분할의 안전도는 0이다.

옛 테헤란 주에는 도시가 nn개 있고 1번부터 nn번까지 번호가 붙어 있다. 테헤란이 1번 도시, 카라지가 nn번 도시다. 어떤 분할로 얻을 수 있는 전체 안전도의 최댓값을 구하는 프로그램을 작성하시오.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫째 줄에는 도시의 수 nn과 도로의 수 mm이 주어진다 (2n1002 \le n \le 100, 1mn(n1)/21 \le m \le n(n-1)/2). 다음 mm개 줄에는 각각 세 정수 uu, vv, rr가 주어진다 (1u,vn1 \le u, v \le n, uvu \ne v, 0r<2600 \le r < 2^{60}). 도시 uu와 도시 vv를 잇는 도로가 있고 그 안전도가 rr라는 뜻이다. 두 도시 사이를 잇는 도로는 많아야 하나다. 마지막 줄에는 0이 두 개 주어지며, 이 줄은 테스트 케이스가 아니다.

출력

각 테스트 케이스마다 전체 안전도의 최댓값을 한 줄에 출력한다.