피보나치 분할
시간 제한10초메모리 제한256 MB
각 연산마다 X에 a_i × F_{b_i}를 더한 뒤, X를 서로 다른 피보나치 수 여러 개의 합으로 나타낼 때 가능한 최대 개수인 partition(X)를 구합니다.
문제
피보나치 수열은 다음과 같이 정의된다: F_n=\\begin{cases} 1 & n=1 \\\\ 2 & n=2 \\\\ F_{n-1}+F_{n-2} & \\text{otherwise} \\end{cases}
수열의 처음 몇 개 원소는 이다.
양의 정수 에 대해 은 을 서로 다른 피보나치 수 개의 합으로 나타낼 수 있는 의 최댓값이다. 예를 들어 , , 이다.
Chiaki는 처음에 0인 정수 를 가지고 있다. 그녀는 에 대해 여러 번 연산을 수행한다. 번째 연산은 를 에 더한다. 매 연산 후 의 값을 구하려고 한다. 매 연산 후 는 양의 정수임이 보장된다.
입력
입력에는 여러 테스트 케이스가 포함된다. 첫 줄에는 테스트 케이스의 수 가 주어진다. 각 테스트 케이스는 다음과 같다.
첫 줄에 연산의 수 ()이 주어진다.
이어지는 개의 줄에는 정수 와 ()가 주어진다.
모든 테스트 케이스의 을 합한 값은 을 넘지 않는다.
출력
각 테스트 케이스마다 개의 정수를 출력한다. 번째 정수는 번째 연산 후 의 값이다.
힌트
예시에서 각 연산 후 의 값은 이다.