페이지가 로드되지 않나요? 여기를 눌러보면 고쳐질 수도 있어요.
Placeholder

#2613

[중등부] 2025 KOI 1차대회 대비 파이널 모의고사

피보나치 목장
스페셜 저지
서브태스크
1초 1024MB

문제

피보나치 수열은 다음과 같이 정의되는 수열이다.

  • F_1=1

  • F_2=1

  • F_n=F_{n-1}+F_{n-2} (단, n\ge 3)

농부 존은 우(牛)시장에서 인식표에 1부터 N까지 번호가 적혀 있는 N마리의 소들을 구매했다.

이 소들은 특이하게도 번호가 x(1\le x\le N)번인 소는 F_x개의 얼룩이 있다.

농부 존은 피보나치 수열을 좋아하는 베시와 엘시가 각각 우두머리로 있는 두 목장에 이번에 새로 구매한 소들을 분배하려고 한다. 하지만 한 목장에 너무 많은 소들이 들어가면 소가 많이 들어온 목장은 너무 붐빌 수 있기 때문에, 두 목장에 배치되는 소들의 얼룩 개수의 합이 같아지도록 소들을 분배하려고 한다. 조건이 맞지 않는다면 일부 소는 다시 환불을 해야 할 수도 있다. 그래도 최대한 많은 수의 소들을 목장에 넣고자 한다.

환불하는 소의 수를 최소화하면서, 두 목장에 새롭게 배치되는 소들의 얼룩 개수의 합이 같도록 소들을 배치하는 방법을 구해보자. 두 목장에 한 마리 이상의 소가 배치되는 방법은 항상 존재한다.


입력

첫째 줄에 농부 존이 구매한 소의 수 N이 주어진다. (2\leq N\leq 2\, 000 )


출력

첫째 줄에 베시의 목장에 배치될 소의 수 X를 출력한다.

둘째 줄에 베시의 목장에 배치될 소들의 번호 A_1,A_2,\cdots ,A_X를 공백으로 구분해서 출력한다.

셋째 줄에 엘시의 목장에 배치될 소의 수 Y를 출력한다.

넷째 줄에 엘시의 목장에 배치될 소들의 번호 B_1,B_2,\cdots ,B_Y를 공백으로 구분해서 출력한다.

가능한 분배 방법이 여러 가지면 그중 아무거나 하나만 출력하라.

[제한]

  • X,Y\ge 1

  • 1\le A_i\le N(1\le i\le X)

  • 1\le B_j\le N(1\le j\le Y)

  • A_1,A_2,\cdots ,A_X,B_1,B_2,\cdots ,B_Y는 서로 다른 수이다.


부분문제

번호 점수 조건
#112점

N \le 10

#224점

N \le 46

#336점

N \le 92

#428점

추가 제약 조건 없음


예제 #1

2
1
2
1
1

베시의 목장: F_2 = 1

엘시의 목장: F_1 = 1


예제 #2

3
2
1 2
1
3

베시의 목장: F_1 = 1, F_2=1

엘시의 목장: F_3 = 2

로그인해야 코드를 작성할 수 있어요.