피보나치 음악
시간 제한1초메모리 제한512 MB
피보나치 수를 M으로 나눈 나머지의 각 자리 숫자로 새 수열을 만들고, N번째 숫자를 묻는 쿼리에 답한다. N은 10^15까지이다.
문제
작곡가 철수는 피보나치 수열로 만든 피아노 곡을 우연히 유튜브에서 보게 되었다. 피보나치 수열은 , , (모든 )을 만족하는 수열이다.
이 곡은 피보나치 수열의 각 자리 숫자에 해당하는 건반을 눌러서 만들었다. 피보나치 수열의 첫 8개 항으로 곡을 만든다면, 다음과 같이 건반을 총 10번 누르게 된다.
1 → 1 → 2 → 3 → 5 → 8 → 1 → 3 → 2 → 1
철수는 자신도 이 방법을 써 보기로 마음먹었다. 그런데 피보나치 수열은 너무 빠르게 증가해서, 덧셈에 약한 철수가 계산하기에는 어려웠다.
그래서 철수는 방법을 조금 바꾸기로 했다. 철수는 어떤 수 을 정한 후, 피보나치 수열의 각 항을 으로 나눈 나머지를 구하고, 각 수의 각 자리 숫자로 새로운 수열을 만들어 이에 따라 피아노 곡을 쓰려고 한다.
예를 들어 일 때, 새로운 수열은 다음과 같다.
{1, 1, 2, 3, 5, 8, 3, 1, …}
따라서 철수는 1 → 1 → 2 → 3 → 5 → 8 → 3 → 1 → 4 → … 순으로 건반을 누르게 된다.
이때, 철수는 어떤 에 대해 번째로 누르게 되는 건반의 번호(새로운 수열의 번째 항)가 궁금해졌다.
개의 이 질의로 주어졌을 때, 각각의 질의에 대해 번째로 누르게 되는 건반의 번호를 출력하는 프로그램을 작성하여라.
입력
첫 번째 줄에는 정수 와 이 공백을 사이에 두고 주어진다.
두 번째 줄부터 개의 줄에 각각의 질의를 나타내는 정수 이 주어진다.
출력
각각의 에 대해, 번째로 누르게 되는 건반의 번호(새로운 수열의 번째 항)를 입력에 주어진 순서대로 총 개의 줄에 출력한다.