만드는 중입니다

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

게놈 팰린드롬

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

요약
길이 n과 k가 주어질 때, A, C, G, T로 이루어진 길이 n의 회문 중 사전순으로 k번째인 것을 구합니다. 그런 회문이 없으면 Impossible을 출력합니다.
난이도

보통10점 중 5점

유형
수학, 문자열, 조합론
정답자
아직 제출이 없습니다

문제

비밀 생물학 연구 덕분에 박테리아의 DNA에 암호화된 메시지를 삽입할 수 있게 되었다. DNA 염기 서열은 AA, CC, GG, TT 문자로 표현되므로, 메시지는 이 문자로 이루어진 문자열로 나타낼 수 있다.

만들어진 박테리아의 수명을 늘리려면 메시지가 팰린드롬이어야 한다. 즉, 앞에서 읽든 뒤에서 읽든 같아야 한다. 예를 들어 "A", "ACA", "ATTTGTTTA"는 팰린드롬이고, "ATGT"와 "CACA"는 팰린드롬이 아니다.

현재 맡은 작업은 길이가 nn인 팰린드롬 메시지를 사전순으로 나열했을 때 kk번째에 오는 메시지를 구하는 것이다. 문자열 s1s2…sns_1s_2\ldots s_n이 t1t2…tnt_1t_2\ldots t_n보다 사전순으로 작다는 것은, 어떤 ii에 대해 s1=t1,s2=t2,…,si−1=ti−1s_1 = t_1, s_2 = t_2, \ldots, s_{i-1} = t_{i-1}이고 si<tis_i < t_i인 경우를 말한다.

입력

첫 줄에 정수 nn과 kk가 공백으로 구분되어 주어진다 (1≤n≤1001 \le n \le 100, 1≤k≤10181 \le k \le 10^{18}).

출력

길이가 nn인 팰린드롬 중 사전순으로 kk번째 메시지를 한 줄에 출력한다. 그런 메시지가 없으면 "Impossible"을 출력한다.

예제3

  1. 예제 1

    입력
    2 1
    
    예상 출력
    AA
    
  2. 예제 2

    입력
    5 6 
    
    예상 출력
    ACCCA
    
  3. 예제 3

    입력
    1 15
    
    예상 출력
    Impossible