#include<bits/stdc++.h>
#define fast ios_base::sync_with_stdio(false); cin.tie(nullptr); cin.tie(nullptr);
#define int long long
#define ld long double
#define pb emplace_back
#define range(v) v.begin(),v.end()
#define mod 1000000007
#define inf (int)1e15
#define pii pair<int,int>
#define ff first
#define ss second
// #define N --
using namespace std;
vector<vector<int>> multiply(vector<vector<int>>& a, vector<vector<int>>& b) {
vector<vector<int>> c(2, vector<int>(2));
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
for (int x = 0; x < 2; x++) {
c[i][j] += (a[i][x] % mod * b[x][j] % mod) % mod;
c[i][j] %= mod;
}
}
}
return c;
}
vector<vector<int>> power(vector<vector<int>> a, int p) {
if (p == 1) return a;
vector<vector<int>> ans = power(a, p / 2);
ans = multiply(ans, ans);
return (p & 1) ? multiply(a, ans) : ans;
}
int fastFib(int n) {
if (n == 0 or n == 1) return n;
vector<vector<int>> t{{1, 1}, {1, 0}};
vector<int> fb{1, 0};
t = power(t, n - 1);
int ans = 0;
for (int i = 0; i < 2; i++) {
ans += (t[0][i] % mod * fb[i] % mod) % mod;
ans %= mod;
}
return ans %= mod;
}
int32_t main() {
fast
int t_c = 1;
cin >> t_c;
while (t_c--) {
// cout << "#: ";
int n;
cin >> n;
cout << fastFib(n) << endl;
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KCiNkZWZpbmUgZmFzdCBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgY2luLnRpZShudWxscHRyKTsgY2luLnRpZShudWxscHRyKTsKI2RlZmluZSBpbnQgbG9uZyBsb25nCiNkZWZpbmUgbGQgbG9uZyBkb3VibGUKI2RlZmluZSBwYiBlbXBsYWNlX2JhY2sKI2RlZmluZSByYW5nZSh2KSB2LmJlZ2luKCksdi5lbmQoKQojZGVmaW5lIG1vZCAxMDAwMDAwMDA3CiNkZWZpbmUgaW5mIChpbnQpMWUxNQojZGVmaW5lIHBpaSBwYWlyPGludCxpbnQ+CiNkZWZpbmUgZmYgZmlyc3QKI2RlZmluZSBzcyBzZWNvbmQKLy8gI2RlZmluZSBOIC0tCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdmVjdG9yPHZlY3RvcjxpbnQ+PiBtdWx0aXBseSh2ZWN0b3I8dmVjdG9yPGludD4+JiBhLCB2ZWN0b3I8dmVjdG9yPGludD4+JiBiKSB7Cgl2ZWN0b3I8dmVjdG9yPGludD4+IGMoMiwgdmVjdG9yPGludD4oMikpOwoJZm9yIChpbnQgaSA9IDA7IGkgPCAyOyBpKyspIHsKCQlmb3IgKGludCBqID0gMDsgaiA8IDI7IGorKykgewoJCQlmb3IgKGludCB4ID0gMDsgeCA8IDI7IHgrKykgewoJCQkJY1tpXVtqXSArPSAoYVtpXVt4XSAlIG1vZCAqIGJbeF1bal0gJSBtb2QpICUgbW9kOwoJCQkJY1tpXVtqXSAlPSBtb2Q7CgkJCX0KCQl9Cgl9CglyZXR1cm4gYzsKfQoKdmVjdG9yPHZlY3RvcjxpbnQ+PiBwb3dlcih2ZWN0b3I8dmVjdG9yPGludD4+IGEsIGludCBwKSB7CglpZiAocCA9PSAxKSByZXR1cm4gYTsKCXZlY3Rvcjx2ZWN0b3I8aW50Pj4gYW5zID0gcG93ZXIoYSwgcCAvIDIpOwoJYW5zID0gbXVsdGlwbHkoYW5zLCBhbnMpOwoJcmV0dXJuIChwICYgMSkgPyBtdWx0aXBseShhLCBhbnMpIDogYW5zOwp9CgppbnQgZmFzdEZpYihpbnQgbikgewoJaWYgKG4gPT0gMCBvciBuID09IDEpIHJldHVybiBuOwoJdmVjdG9yPHZlY3RvcjxpbnQ+PiB0e3sxLCAxfSwgezEsIDB9fTsKCXZlY3RvcjxpbnQ+IGZiezEsIDB9OwoJdCA9IHBvd2VyKHQsIG4gLSAxKTsKCglpbnQgYW5zID0gMDsKCWZvciAoaW50IGkgPSAwOyBpIDwgMjsgaSsrKSB7CgkJYW5zICs9ICh0WzBdW2ldICUgbW9kICogZmJbaV0gJSBtb2QpICUgbW9kOwoJCWFucyAlPSBtb2Q7Cgl9CglyZXR1cm4gYW5zICU9IG1vZDsKfQoKaW50MzJfdCBtYWluKCkgewoJZmFzdAoJaW50IHRfYyA9IDE7CgljaW4gPj4gdF9jOwoJd2hpbGUgKHRfYy0tKSB7CgkJLy8gY291dCA8PCAiIzogIjsKCQlpbnQgbjsKCQljaW4gPj4gbjsKCQljb3V0IDw8IGZhc3RGaWIobikgPDwgZW5kbDsKCX0KfQ==