준기는 N(1≤N≤2⋅105)개의 수로 이루어진 수열를 암호화하는 새로운 규칙을 발명했다. 준기의 암호화는 M(1≤M≤2⋅105)개의 단서로 구성된다.
i번째 단서는 L_i,R_i,XOR_i (1≤L_i≤R_i≤N,0≤XOR_i≤109)의 세가지 값으로 이루어져 있는데, 이는 준기가 가진 수열에서 L_i 번째 수부터 R_i 번째 수까지를 전부 bitwise XOR한 값이 XOR_i라는 뜻이다.
승원은 준기의 암호화 규칙을 듣고 주어진 규칙을 만족하는 N개의 수를 복구해내는 방법을 찾으려고 했지만 결국 실패하고 말았다. 승원를 도와 준기의 암호화 규칙이 주어졌을 때 주어진 규칙을 만족하는 N개의 수를 출력하는 프로그램을 작성해보자.
첫줄에 N,M이 공백으로 구분되어 주어진다(1≤N,M≤2⋅105).
둘째 줄부터 M줄에 걸쳐 L_i,R_i,XOR_i (1≤L_i≤R_i≤N,0≤XOR_i≤109)가 공백으로 구분되어 주어진다. 이는 각각 배열에서 L_i번째 수부터 R_i번째 수까지를 bitwise XOR한 값이 XOR_i라는 뜻이다.
주어진 M개의 규칙을 모두 만족하는 N개의 수를 공백으로 구분하여 출력한다. 결과 배열을 구성하는 수는 0 이상 2⋅109 이하의 수여야 한다. 조건을 만족하는 수열이 여러 가지라면 아무거나 출력한다. 만약 조건을 모두 만족하는 수열이 존재하지 않는다면 −1을 출력한다.