만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

Oha

시간 제한2초메모리 제한256 MB

요약
주어진 n에 대해 A와 B로만 이루어진 길이 k의 사용자 이름이 정확히 n개 남도록 금지 부분 문자열 목록을 만드는 문제입니다.
난이도

보통10점 중 7점

유형
문자열, 비트 연산, 수학
정답자
아직 제출이 없습니다

문제

온라인 게임을 새로 출시한다. 많은 사람이 이 게임을 하고 싶어 할 것이다. 하지만 서버는 nn명의 플레이어만 감당할 수 있다. 플레이어가 많을수록 수익이 늘어나므로, 목표는 플레이어를 정확히 nn명으로 맞추는 것이다.

서버가 준비되지 않았다고 공개하면 회사 평판에 나쁘다. 그래서 유효한 사용자 이름이 정확히 nn개가 되도록, 선택할 수 있는 사용자 이름을 제한하는 방식을 쓴다.

유효한 사용자 이름은 다음 조건을 모두 만족하는 문자열이다.

  • 길이가 정확히 kk이다.
  • A와 B로만 이루어진다.
  • 금지 부분 문자열 목록 s1,s2,…,sms_1, s_2, \dots, s_m의 어떤 문자열도 부분 문자열로 포함하지 않는다.

유효한 사용자 이름이 정확히 nn개가 되도록 kk, mm, 문자열 s1,…,sms_1, \dots, s_m을 고른다. 고를 수 있는 값의 범위는 출력 형식에 나와 있다.

입력

입력 파일의 첫 줄에 정수 nn (1≤n≤1091 \le n \le 10^9)이 주어진다.

출력

첫 줄에 사용자 이름의 길이 kk와 금지 부분 문자열의 개수 mm을 출력한다. 이어지는 mm개의 줄에는 금지 부분 문자열을 한 줄에 하나씩 출력한다.

  • 1≤k≤601 \le k \le 60
  • 0≤m≤1000 \le m \le 100
  • 각 금지 부분 문자열의 길이는 1 이상 kk 이하이며, A와 B로만 이루어진다.
  • 출력한 값에 대해 유효한 사용자 이름이 정확히 nn개 있어야 한다.

해는 항상 존재한다. 유효한 답이면 어떤 것을 출력해도 된다. 금지 부분 문자열끼리 같거나 서로의 부분 문자열이어도 된다.

예제3

  1. 예제 1

    입력
    5
    
    예상 출력
    3 1
    BB
    
  2. 예제 2

    입력
    6
    
    예상 출력
    3 2
    ABB
    BBB
    
  3. 예제 3

    입력
    8
    
    예상 출력
    3 0