비밀 소 암호

무한 코드 문자열이 두 배씩 늘어난다. 각 단계는 현재 문자열을 오른쪽으로 한 칸 회전해 붙인다. N번째 문자를 구한다.

보통6재귀분할 정복수학아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

소들이 비밀 암호를 실험하고 있다. 소들은 암호의 일부로 쓸 무한히 긴 문자열을 만드는 방법을 고안했다.

문자열 ss에 대해 F(s)F(s)ss 뒤에 ss를 오른쪽으로 한 칸 "회전"한 문자열을 이어 붙인 것이다. 오른쪽 회전에서는 ss의 마지막 문자가 맨 앞으로 옮겨 가 새로운 첫 문자가 된다. 소들은 처음 문자열 ssFF를 계속 적용해서 무한히 긴 암호 문자열을 만든다. 따라서 한 번 적용할 때마다 현재 문자열의 길이가 두 배가 된다.

처음 문자열과 위치 NN이 주어질 때, 무한 암호 문자열의 NN번째 문자를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 문자열과 NN이 공백으로 구분되어 주어진다. 문자열은 알파벳 대문자로만 이루어져 있고 길이는 최대 30이다. N1018N \le 10^{18}이다.

NN은 32비트 정수 범위를 넘을 수 있으므로 64비트 정수 자료형(C/C++의 long long 등)을 사용하는 것이 좋다.

출력

처음 문자열로 만든 무한 암호 문자열의 NN번째 문자를 출력한다. 첫 문자는 N=1N=1이다.

힌트

예제에서 처음 문자열 COW는 다음과 같이 늘어난다.

COW -> COWWCO -> COWWCOOCOWWC
                 12345678