아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

불사 돌고래

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

요약
Y가 최대 2^48인 질의가 최대 1000개 주어지며 각 Y번째 피보나치 수를 10억으로 나눈 나머지를 출력합니다.
난이도

보통10점 중 4점

유형
행렬, 분할 정복, 수학
정답자
아직 제출이 없습니다

문제

불사 돌고래는 직선의 저편에 살면서 살아 있는 갈매기를 잡아먹는다. 갈매기를 그쪽으로 실어 나르는 일은 연방법이 금지하고 있지만, 그건 또 다른 이야기다.

과학자 Leo O. Pisa는 불사 돌고래를 오래 관찰해 몇 가지 사실을 알아냈다. 돌고래 한 쌍은 해마다 새끼 두 마리, 곧 한 쌍을 낳는다. 새끼가 다 자라 스스로 새끼를 낳기까지는 꼬박 한 해가 걸린다. 그래서 갓 태어난 한 쌍에서 시작하면 1년째 말에는 여전히 한 쌍이 있고, 이 쌍은 이제 다 자란 상태다. 2년째 말에는 새로 태어난 한 쌍이 생기고 다 자란 한 쌍도 그대로 남는다.

해마다 작년에 살아 있던 돌고래는 하나도 빠짐없이 그대로 살아 있고, 두 해 전에 이미 살아 있던 쌍은 저마다 새끼 한 쌍을 낳는다. 다만 세상이 불사 돌고래로 뒤덮이지 않도록, 쌍의 수가 10억(10910^9) 쌍 이상이 되면 그중 10억 쌍이 홀연히 사라진다. 그래서 어떤 해에는 개체 수가 완전히 0이 되기도 하고, 그런 해의 이듬해에는 한 쌍이 다시 나타난다. 결국 Y년째 말에 살아 있는 쌍의 수는 fib(Y) mod 109fib(Y) \bmod 10^9이며, 여기서 fibfib는 fib(1)=fib(2)=1fib(1) = fib(2) = 1인 피보나치 수열이다.

연도별 쌍의 수를 적으면 다음과 같다.

연도쌍의 수
11
21
32
43
55
68
713
821
......
43433494437
44701408733
45134903170
46836311903

1년째가 시작될 때 갓 태어난 한 쌍이 있다고 하자. Y년째 말에 살아 있는 불사 돌고래 쌍의 수를 구하는 프로그램을 작성한다. 불사 돌고래는 우주가 정확히 248=281,474,976,710,6562^{48} = 281{,}474{,}976{,}710{,}656년 동안만 존재한다고 믿으므로, 그보다 뒤의 해는 다루지 않아도 된다.

입력

첫 줄에 데이터 집합의 개수 PP가 주어진다 (1≤P≤10001 \le P \le 1000). 각 데이터 집합은 서로 독립이며 모두 같은 방식으로 처리한다.

이어지는 PP개의 줄에는 각각 공백으로 구분된 두 정수 KK와 YY가 주어진다. KK는 데이터 집합 번호로 1부터 PP까지 순서대로 매겨진다. YY는 돌고래가 살아온 햇수이며 1≤Y≤2481 \le Y \le 2^{48}이다.

출력

각 데이터 집합마다 한 줄씩 출력한다. 한 줄에는 데이터 집합 번호 KK, 공백 하나, YY년째 말에 살아 있는 불사 돌고래 쌍의 수를 차례로 쓴다.

예제2

  1. 예제 1

    입력
    11
    1 1
    2 2
    3 8
    4 20
    5 46
    6 60
    7 3749999998
    8 3749999999
    9 3750000000
    10 3750000001
    11 281474976710656
    
    예상 출력
    1 1
    2 1
    3 21
    4 6765
    5 836311903
    6 8755920
    7 499999999
    8 500000001
    9 0
    10 500000001
    11 309764667
    
  2. 예제 2

    입력
    1
    1 1
    
    예상 출력
    1 1