cs71107은 신기한 기계를 발견했다. 기계에는 1번부터 N번까지 번호가 붙어있는 N 개의 버튼과 수를 표시하는 장치가 하나 있다. 처음에는 0이 표시되어 있다.
cs71107은 버튼을 누를 때마다 표시되는 수가 특정한 규칙에 따라 변한다는 사실을 알아냈다. 기존에 표시되는 수를 X라고 할 때, i번 버튼을 누르면 표시되는 수가 X⊕A_i, 즉 X와 A_i의 bitwise XOR로 변한다는 사실을 알아냈다.
버튼을 몇 개씩 눌러보던 중 cs71107은 표시되는 수로 서로 다른 수를 최대한 많이 만들고 싶다고 생각했다. 단, 아무 방법으로만 만들면 재미없다고 생각해서 버튼을 최대한 적게, 또 그런 방법이 여러 개라면 누른 버튼의 번호로 이루어진 수열이 사전 순으로 가장 앞선 방법으로 누르고 싶었다.
안타깝게도 cs71107은 이 문제를 해결할 수 있을 정도로 똑똑하지 않다. 여러분이 cs71107을 도와서 문제를 해결해 주자!
첫 번째 줄에 N이 주어진다.
두 번째 줄에 N개의 정수 A_1,A_2,⋯,A_N이 공백으로 구분되어 주어진다.
첫째 줄에 서로 다른 수를 최대한 많이 만들기 위해 버튼을 눌러야 하는 최소 횟수인 K를 출력한다.
두 번째 줄부터 K 개의 줄을 출력한다. 이 중 i 번째 줄에는 i 번째로 눌러야 하는 버튼의 번호를 출력한다. 가능한 답이 여럿 있으면 사전 순으로 가장 앞서는 답을 출력한다.