시간 제한 메모리 제한 제출 횟수 정답 횟수 (비율) 정답자 수
1.0 초 32 MB 1 1 (100%) 1
문제
밀코는 흥미로운 숙제를 받았다: 그의 작은 프로세서를 직접 디자인하는 것이다 (밀코프로세서). 프로세서는 N개의 레지스터가 1에서 N으로 색인되어있으며, 각각의 레지스터는 부호없는 32비트 정수의 평범한 이진수 형태이다. (0에서 232-1의 값을 표현가능하다) 프로세서는 다음과 같은 종류의 명령들을 수행할 수 있다. ![그림1](/download_file/e834f5af5cbb03e3856ef0b86f11e8bf1b56b1c68800e0f7832c9c6bb1a254bd/XOR.png/?show=true) 밀코는 이미 프로세스의 모델을 구축했고, 그는 단지 한 레지스터의 내용을 읽는 연산을 만드는 것을 까먹었다. 현재, 그가 가능한 선택지는 타입 1과 타입 2명령을 많은 횟수 사용해 레지스터에 담진 내용을 추론하는 것이다. 명령어들의 순열을 실행하고나서, 그는 당시에게 최초에 레지스터에 들어있는 내용이 무엇이었는지 획득한 결과로부터 유도하는것을 도와달라고 했다. 만약 처음 레지스터의 상태 조합이 많은 경우가 가능하다면, 사전순으로 가장 빠른 경우를 찾아라. (만약 두개의 조합이 앞의 K-1개의 레지스터가 같고 K번째 레지스터가 다를 때, 사전순으로 빠른 조합은 K번째 레지스터의 값이 작은쪽이다.)
입력
첫번째 줄에 두개의 양의 정수가 주어진다: 레지스터의 갯수 N(2<=N<=100 000)과 실행된 명령어의 갯수 E (1<=E<=100 000). 남은 입력줄들은 밀코프로세스의 명령어들이 실행된 순서로 주어지는데, 형식은 위에서 준 테이블과 같고, 하나당 하나의 줄에 주어진다. 모든 명령어는 가능하며 (이 조건을 만족한다: 1<=K,L<=N, 0<=M<32). 각각의 타입 2명령어는 다음줄에 0에서 232-1사이의 정수가 주어진다, 포함해서 - 명령어의 결과(XOR비트연산)가 10진수로 주어진다.
출력
첫번째 줄에 단 하나의 줄로 N개의 레지스터의 값을 공백으로 구분해서 출력한다. 만약 가능한 경우가 없다면 -1을 출력하여, 밀고에서 그의 프로세서가 버그가 있음을 알려주자.
힌트
배점형식 테스트 데이터의 64점 까지, N과 E는 1000보다 작다. 입력예제1 ``` 3 3 2 1 2 1 2 1 3 2 2 2 3 3 ``` 출력예제1 ``` 0 1 2 ``` 입력예제2 ``` 4 6 2 4 2 3 2 4 1 6 1 3 1 2 3 1 2 1 2 2 2 2 3 7 ``` 출력예제2 ``` 5 0 14 3 ``` 입력예제3 ``` 5 6 2 4 2 10 2 5 3 2 2 2 3 1 2 1 4 3 1 3 1 2 3 4 2147483663 ``` 출력예제3 ``` 15 6 7 12 5 ```