/*Dãy số Fibonacci được định nghĩa Fn = Fn-1 + Fn-2, n>1 và F0 = 0, F1 = 1. Dưới đây là một số số Fibonacci : 0, 1, 1, 2, 3, 5, 8, 13, 21…
 
Nhiệm vụ của bạn là tìm số Fibonacci thứ n.
 
Input:
 
Dòng đầu tiên đưa vào số lượng bộ test T.
Những dòng kế tiếp đưa vào các bộ test. Mỗi bộ test là một số nguyên dương n.
T, n thỏa mãn ràng buộc :1 ≤ T ≤ 100; 1≤n≤1000.
Output:
 
Đưa ra kết quả mỗi test theo modulo 109 + 7 theo từng dòng.*/
 
 
#include <bits/stdc++.h>
using namespace std;
 
#define ll long long
 
int mod = 1e9 + 7;
 
struct matran{
	ll a[2][2];
	friend matran operator * (matran x, matran y){
		matran res;
		for(int i = 0; i < 2; i++){
			for(int j = 0; j < 2; j++){
				res.a[i][j] = 0;
				for(int k = 0; k < 2; k++){
					res.a[i][j] += x.a[i][k] * y.a[k][j];
					res.a[i][j] %= mod;
				}
			}
		}
		return res;
	}
};
 
matran binpow(matran a, ll k){
	if(k == 1) return a;
	matran X = binpow(a, k / 2);
	if(k % 2 == 0){
		return X * X;
	}
	else return X * X * a;
}
 
int main(){
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	int t; cin >> t;
	while(t--){
		int n; cin >> n;
		matran x;
		x.a[0][0] = 1;
		x.a[0][1] = 1;
		x.a[1][0] = 1;
		x.a[1][1] = 0;
		matran res = binpow(x, n);
		cout << res.a[0][1] << endl;
	}
	return 0;
}
				LypEw6N5IHPhu5EgRmlib25hY2NpIMSRxrDhu6NjIMSR4buLbmggbmdoxKlhIEZuID0gRm4tMSArIEZuLTIsIG4+MSB2w6AgRjAgPSAwLCBGMSA9IDEuIETGsOG7m2kgxJHDonkgbMOgIG3hu5l0IHPhu5Egc+G7kSBGaWJvbmFjY2kgOiAwLCAxLCAxLCAyLCAzLCA1LCA4LCAxMywgMjHigKYKCk5oaeG7h20gduG7pSBj4bunYSBi4bqhbiBsw6AgdMOsbSBz4buRIEZpYm9uYWNjaSB0aOG7qSBuLgoKSW5wdXQ6CgpEw7JuZyDEkeG6p3UgdGnDqm4gxJHGsGEgdsOgbyBz4buRIGzGsOG7o25nIGLhu5kgdGVzdCBULgpOaOG7r25nIGTDsm5nIGvhur8gdGnhur9wIMSRxrBhIHbDoG8gY8OhYyBi4buZIHRlc3QuIE3hu5dpIGLhu5kgdGVzdCBsw6AgbeG7mXQgc+G7kSBuZ3V5w6puIGTGsMahbmcgbi4KVCwgbiB0aOG7j2EgbcOjbiByw6BuZyBideG7mWMgOjEg4omkIFQg4omkIDEwMDsgMeKJpG7iiaQxMDAwLgpPdXRwdXQ6CgrEkMawYSByYSBr4bq/dCBxdeG6oyBt4buXaSB0ZXN0IHRoZW8gbW9kdWxvIDEwOSArIDcgdGhlbyB04burbmcgZMOybmcuKi8KCgojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgbGwgbG9uZyBsb25nCgppbnQgbW9kID0gMWU5ICsgNzsKCnN0cnVjdCBtYXRyYW57CglsbCBhWzJdWzJdOwoJZnJpZW5kIG1hdHJhbiBvcGVyYXRvciAqIChtYXRyYW4geCwgbWF0cmFuIHkpewoJCW1hdHJhbiByZXM7CgkJZm9yKGludCBpID0gMDsgaSA8IDI7IGkrKyl7CgkJCWZvcihpbnQgaiA9IDA7IGogPCAyOyBqKyspewoJCQkJcmVzLmFbaV1bal0gPSAwOwoJCQkJZm9yKGludCBrID0gMDsgayA8IDI7IGsrKyl7CgkJCQkJcmVzLmFbaV1bal0gKz0geC5hW2ldW2tdICogeS5hW2tdW2pdOwoJCQkJCXJlcy5hW2ldW2pdICU9IG1vZDsKCQkJCX0KCQkJfQoJCX0KCQlyZXR1cm4gcmVzOwoJfQp9OwoKbWF0cmFuIGJpbnBvdyhtYXRyYW4gYSwgbGwgayl7CglpZihrID09IDEpIHJldHVybiBhOwoJbWF0cmFuIFggPSBiaW5wb3coYSwgayAvIDIpOwoJaWYoayAlIDIgPT0gMCl7CgkJcmV0dXJuIFggKiBYOwoJfQoJZWxzZSByZXR1cm4gWCAqIFggKiBhOwp9CgppbnQgbWFpbigpewoJaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwoJY2luLnRpZShudWxscHRyKTsKCWludCB0OyBjaW4gPj4gdDsKCXdoaWxlKHQtLSl7CgkJaW50IG47IGNpbiA+PiBuOwoJCW1hdHJhbiB4OwoJCXguYVswXVswXSA9IDE7CgkJeC5hWzBdWzFdID0gMTsKCQl4LmFbMV1bMF0gPSAxOwoJCXguYVsxXVsxXSA9IDA7CgkJbWF0cmFuIHJlcyA9IGJpbnBvdyh4LCBuKTsKCQljb3V0IDw8IHJlcy5hWzBdWzFdIDw8IGVuZGw7Cgl9CglyZXR1cm4gMDsKfQ==