인코딩

아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

정보를 공부하는 학생 파벨은 지난 학기에 들은 자료 압축 수업에서 다룬 문제들에 흥미를 느꼈다. 그는 자연수 수열을 압축하는 새로운 방법을 고안하기로 했다.

파벨이 만든 알고리즘의 첫 단계는 자연수들의 수열을 이진수로 표현한 수열로 바꾸는 것이다. 그런데 단순히 이어 붙이기만 하면 어디서 한 수가 끝나고 다음 수가 시작되는지 알 수 없다. 0과 1만으로 각 수의 경계를 구분해야 하므로, 파벨은 연속한 두 개의 1을 한 수의 끝을 나타내는 구분자로 쓰기로 했다. 이 규칙 때문에 하나의 수를 나타내는 이진 코드에는 다음 제약이 생긴다: 코드 안에 1이 두 개 연속으로 나올 수 없고, 코드는 반드시 1로 시작해야 한다.

압축 효율을 알아보기 위해, 파벨은 n개의 비트로 서로 다른 코드를 몇 개나 만들 수 있는지 알고 싶어 한다. 주어진 n에 대해, 길이가 n이면서 1로 시작하고 1이 두 개 연속으로 나오지 않는 서로 다른 0-1 문자열의 개수를 구하는 프로그램을 작성하여라.

입력

첫째 줄에 데이터 집합의 개수 T (1 ≤ T ≤ 100)가 주어진다. 이어서 T개의 데이터 집합이 주어진다. 각 데이터 집합은 한 줄로 이루어지며, 그 줄에는 정수 n (1 ≤ n ≤ 45)이 하나 주어진다.

출력

각 데이터 집합마다, 길이가 n이면서 1로 시작하고 1이 두 개 연속으로 나오지 않는 서로 다른 0-1 문자열의 개수를 한 줄에 하나씩 출력한다.

힌트

길이가 4이면서 조건을 만족하는 문자열은 1000, 1001, 1010 세 가지이다.