카드 뒤집기

아직 제출이 없습니다시간 제한1초메모리 제한1024 MB

문제

11부터 NN까지 서로 다른 정수가 적혀있는 카드를 NN장 가지고 있다. 각 카드에는 앞면과 뒷면이 존재한다. 카드의 앞면에는 숫자가 적혀있고, 뒷면에는 카드의 무늬가 그려져 있다.

NN장의 카드를 원하는 순서대로 앞면이 보이도록 일렬로 배열한다. 이제 아래의 규칙에 따라 카드를 뒤집을 것이다.

  1. 맨 먼저 한 장의 카드를 골라 뒷면으로 뒤집는다.
  2. 가장 마지막으로 뒤집은 카드에 적힌 번호를 xx라 하자. 마지막으로 뒤집은 카드에서 왼쪽으로 xx장 떨어진 앞면 카드 또는 오른쪽으로 xx장 떨어진 앞면 카드를 뒤집는다. 만약 해당하는 카드가 없으면 뒤집는 과정을 종료한다.
  3. 2번 단계가 종료될 때까지 뒤집는 과정을 반복한다.

카드의 장수 NN이 주어질 때, 모든 카드를 뒤집을 수 있도록 배열할 수 있는지 알고 싶다. 따라서 모든 카드를 뒤집을 수 있는 배치가 존재하는지 여부를 출력하고, 그러한 배치가 존재한다면 카드를 배열하는 방법과 뒤집는 순서를 출력해야 한다.

입력

첫 번째 줄에 카드의 장수 NN이 주어진다. (1N200 000)(1 \le N \le 200\ 000)

출력

첫 번째 줄에 모든 카드를 뒤집을 수 있도록 배열할 수 있는지를 출력해야 한다. 만약 가능하다면 YES, 불가능하다면 NO를 출력해야 한다.

만약 모든 카드를 뒤집을 수 있도록 배열할 수 있다면, 두 번째 줄에 카드의 배열 b_1,b_2,...,b_nb\_1, b\_2, ..., b\_n을 출력한다. b_ib\_iii번째 카드에 적혀있는 숫자를 의미한다.

이후 세 번째 줄에 카드를 뒤집는 순서 c_1,c_2,...,c_nc\_1, c\_2, ..., c\_n을 출력한다. c_ic\_iii번째로 뒤집을 카드의 위치를 의미한다.

만약 가능한 배열 방법 또는 뒤집는 순서가 여러 가지일 경우 가능한 하나만 출력하면 된다.