XOR 삼형제 2
면접 대비시간 제한5초메모리 제한256 MB
1부터 N까지 수 중에서 서로 다른 세 수의 xor이 0이 되지 않는 가장 큰 연속 구간을 시작 수가 가장 작은 것으로 고릅니다.
문제
서로 다른 세 양의 정수 , , 가 을 만족하면 이 세 수를 XOR 삼형제라고 부른다. 는 비트 단위 배타적 논리합이다.
정수 이 주어진다. 부터 까지의 정수 중에서 몇 개를 고르되, 고른 수 가운데 어떤 세 수도 XOR 삼형제를 이루지 않아야 한다. 이 조건을 지키면서 가장 많이 고르는 방법을 찾아라.
입력
첫 줄에 테스트 케이스의 수 가 주어진다. ()
이어지는 개의 줄에 각각 정수 이 하나씩 주어진다. ()
출력
각 테스트 케이스마다 두 줄에 걸쳐 답을 출력한다.
첫 줄에는 고른 수의 최대 개수를 출력한다.
둘째 줄에는 고른 수를 오름차순으로, 공백 하나로 구분해 출력한다.
최대 개수를 이루는 선택이 여러 가지일 수 있으므로 출력할 답을 하나로 정한다. 인 모든 에서, 최대 개수를 이루면서 연속한 정수로만 이루어진 선택이 항상 존재한다. 그 선택을 출력한다. 그런 선택이 둘 이상이면 첫 수가 가장 작은 것을 출력한다.