#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
const int INF = 1e9;
const ll LINF = 1e18;
struct BigInt {
static const int BASE = 1e9;
static const int B = 9;
vector<int> a;
BigInt() {}
BigInt(ll x) {
for (; x > 0; x /= BASE) {
a.push_back(x % BASE);
}
}
BigInt(const string &s) {
for (int i = (int)s.size() - 1; i >= 0; i -= B) {
int beg = max(0, i - B + 1);
int len = i - beg + 1;
int block = stoi(s.substr(beg, len));
a.push_back(block);
}
trim();
}
void trim() {
while (!a.empty() && a.back() == 0) {
a.pop_back();
}
}
bool isZero() {
return (a.empty());
}
BigInt operator+=(const BigInt &other) {
int n = a.size(), m = other.a.size();
int carry = 0;
for (int i = 0; i < max(n, m) || carry; i++) {
if (i == a.size()) {
a.push_back(0);
}
a[i] += (i < m ? other.a[i] : 0) + carry;
carry = (a[i] >= BASE);
if (carry) a[i] -= BASE;
}
return *this;
}
BigInt operator+(const BigInt &other) const {
return BigInt(*this) += other;
}
friend istream& operator>>(istream &in, BigInt &num) {
string s;
in >> s;
num = BigInt(s);
return in;
}
friend ostream& operator<<(ostream &out, const BigInt &num) {
out << (num.a.empty() ? 0 : num.a.back());
for (int i = (int)num.a.size() - 2; i >= 0; i--) {
out << setw(B) << setfill('0') << num.a[i];
}
return out;
}
};
const int N = 1e2 + 5;
BigInt dp[N]; // dp[i] = Số cách lát các viên gạch khi xét đến cột thứ i
// - Để tính dp[i] cho dạng bài kiểu như này thì ta cứ xét qua hết các trường hợp lát gạch
// sao cho lấp đầy được cột i, nhằm đưa về bài toán nhỏ hơn với các cột ở trước
// - Cụ thể trong bài này thì sẽ có 2 trường hợp:
// TH1: Lấp đầy cột i bằng 1 viên gạch kích thước 2 * 1
// => Đưa về bài toán với i - 1 cột ở trước
// => dp[i - 1]
// TH2: Lấp đầy cột i và cột i - 1 bằng 2 viên gạch kích thước 1 * 2
// => Đưa về bài toán với i - 2 cột ở trước
// => dp[i - 2]
void precompute() {
dp[0] = dp[1] = 1;
for (int i = 2; i < N; i++) dp[i] = dp[i - 1] + dp[i - 2];
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t; cin >> t;
precompute();
while (t--) {
int n; cin >> n;
cout << dp[n] << '\n';
}
}