피보나치 수 fk는 fk=fk−1+fk−2로 정의되며, 초기값은 f0=0, f1=1이다. 모든 양의 정수는 서로 다른 피보나치 수 하나 이상의 합으로 나타낼 수 있다는 사실이 잘 알려져 있다.
한 양의 정수를 서로 다른 피보나치 수들의 합으로 나타내는 방법은 여러 가지다. 예를 들어 100은 f4+f6+f11=3+8+89로도, f1+f3+f6+f11=1+2+8+89로도, f4+f6+f9+f10=3+8+34+55로도 나타낼 수 있다.
이 문제는 한 양의 정수를 개수가 가장 적은 서로 다른 피보나치 수들의 합으로 나타내는 것이다. 양의 정수 n이 주어질 때, 합이 n과 같아지면서 사용하는 서로 다른 피보나치 수의 개수가 최소가 되는 조합을 구하라.
입력은 표준 입력으로 받는다. 첫 번째 줄에 테스트 데이터의 개수를 나타내는 정수 T가 주어진다. 이어지는 각 줄에는 정수 n이 하나씩 주어진다 (1≤n≤1,000,000,000).
출력은 표준 출력을 사용한다. 각 테스트 데이터마다 답을 한 줄에 출력한다. 합이 주어진 정수 n과 같아지는 최소 개수의 서로 다른 피보나치 수들을 증가하는 순서로 공백으로 구분하여 출력한다.