#include <bits/stdc++.h>
#include<math.h>
#include <vector>
using namespace std;
typedef long long int ll;
ll M = 1000000007 ;
map< ll, ll> mp;
long long fibonacci( long long n) {
if ( mp.count ( n) )
{
printf ( "return for n=%lld f[n]=%lld\n " ,n,mp[ n] ) ;
return mp[ n] ;
} long long k= n/ 2 ;
printf ( "k=%lld\n " ,k) ;
if ( n% 2 == 0 ) {
printf ( "calling k=%lld k+1=%lld and f[n]=%lld n=%lld" ,k,( k+ 1 ) ,mp[ n] ,n) ;
return mp[ n] = fibonacci( k) * ( fibonacci( k+ 1 ) + fibonacci( k- 1 ) ) % M;
} else {
printf ( "odd calling k=%lld k+1=%lld and f[n]=%lld n=%lld\n " ,k,( k+ 1 ) ,mp[ n] ,n) ;
return mp[ n] = ( fibonacci( k+ 1 ) * fibonacci( k+ 1 ) + fibonacci( k) * fibonacci( k) ) % M;
}
}
int main( )
{
mp[ 0 ] = mp[ 1 ] = 1 ;
ll t;
scanf ( "%lld" ,& t) ;
while ( t-- )
{
long long n;
scanf ( "%lld" ,& n) ;
printf ( "%lld\n " ,fibonacci( n) ) ;
}
return 0 ;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNpbmNsdWRlPG1hdGguaD4KI2luY2x1ZGUgPHZlY3Rvcj4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnR5cGVkZWYgbG9uZyBsb25nIGludCBsbDsKCmxsIE0gPSAxMDAwMDAwMDA3OwoKbWFwPGxsLCBsbD4gbXA7Cgpsb25nIGxvbmcgZmlib25hY2NpKGxvbmcgbG9uZyBuKSB7CglpZiAobXAuY291bnQobikpCgl7CgkJcHJpbnRmKCJyZXR1cm4gZm9yIG49JWxsZCBmW25dPSVsbGRcbiIsbixtcFtuXSk7CgkJcmV0dXJuIG1wW25dOwoJCgl9bG9uZyBsb25nIGs9bi8yOwoJcHJpbnRmKCJrPSVsbGRcbiIsayk7CglpZiAobiUyPT0wKSB7IAoJCXByaW50ZigiY2FsbGluZyBrPSVsbGQgIGsrMT0lbGxkICBhbmQgZltuXT0lbGxkIG49JWxsZCIsaywoaysxKSxtcFtuXSxuKTsKCQlyZXR1cm4gbXBbbl0gPSBmaWJvbmFjY2koaykqKGZpYm9uYWNjaShrKzEpK2ZpYm9uYWNjaShrLTEpKSAlIE07Cgl9IGVsc2UgeyAKCQkJcHJpbnRmKCJvZGQgY2FsbGluZyBrPSVsbGQgIGsrMT0lbGxkICBhbmQgZltuXT0lbGxkIG49JWxsZFxuIixrLChrKzEpLG1wW25dLG4pOwoJCXJldHVybiBtcFtuXSA9IChmaWJvbmFjY2koaysxKSpmaWJvbmFjY2koaysxKSArIGZpYm9uYWNjaShrKSpmaWJvbmFjY2koaykpICUgTTsKCX0KfQoKCgoKaW50IG1haW4oKQp7CiAgICBtcFswXT1tcFsxXT0xOwogICAgbGwgdDsKICAgIHNjYW5mKCIlbGxkIiwmdCk7CiAgICB3aGlsZSh0LS0pCiAgICB7CiAgICAgICAgbG9uZyBsb25nIG47CiAgICAgICAgc2NhbmYoIiVsbGQiLCZuKTsKICAgICAgICBwcmludGYoIiVsbGRcbiIsZmlib25hY2NpKG4pKTsKICAgIH0KICAgIHJldHVybiAwOwp9