import java.io.* ;
class Main {
static long c
= ( long ) ( Math .
pow ( 10 ,
9 ) + 7 ) ;
int l
= Integer .
parseInt ( br.
readLine ( ) ) ; while ( l-- > 0 ) {
long n
= Long .
parseLong ( br.
readLine ( ) ) ; long res = 1 ;
if ( n
== 1 ) { System .
out .
println ( 1 ) ; continue ; } long d = ( n/ 3 ) ;
long rem = ( n% 3) ;
if ( rem == 1 ) { d--; rem+= 3 ; }
else if ( rem == 0 ) { rem++; } // keeps final ansr non-zero
long a = 3 ;
while ( d > 0 ) {
if ( ( d & 1 ) == 1 ) {
res = ( res* a) % c;
}
a = ( a* a) % c;
d >>= 1 ;
}
res = ( rem* res) % c;
}
}
}
/*1000000
619807164
999999
154951791
22
8748*/
aW1wb3J0IGphdmEuaW8uKjsKCiBjbGFzcyBNYWluIHsKCnN0YXRpYyBsb25nIGMgPSAobG9uZykoTWF0aC5wb3coMTAsOSkrNyk7CgogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIElPRXhjZXB0aW9uIHsKICAgICAgICBCdWZmZXJlZFJlYWRlciBiciA9IG5ldyBCdWZmZXJlZFJlYWRlcihuZXcgSW5wdXRTdHJlYW1SZWFkZXIoU3lzdGVtLmluKSk7CgogICAgICAgIGludCBsID0gSW50ZWdlci5wYXJzZUludChici5yZWFkTGluZSgpKTsKICAgICAgICB3aGlsZSAobC0tID4gMCkgewogICAgICAgICAgICBsb25nIG4gPSBMb25nLnBhcnNlTG9uZyhici5yZWFkTGluZSgpKTsKICAgICAgICAgICAgbG9uZyByZXMgPSAxOwoKICAgICAgICAgICAgaWYobj09MSl7U3lzdGVtLm91dC5wcmludGxuKDEpO2NvbnRpbnVlO30KICAgICAgICAgICAgbG9uZyBkID0gKG4vMyk7CiAgICAgICAgICAgIGxvbmcgcmVtID0gKG4lMyk7CgoKICAgICAgICAgICAgaWYocmVtID09IDEpe2QtLTtyZW0rPTM7fQogICAgICAgICAgICBlbHNlIGlmKHJlbSA9PSAwKXtyZW0rKzt9ICAvLyBrZWVwcyBmaW5hbCBhbnNyIG5vbi16ZXJvCgogICAgICAgICAgICBsb25nIGEgPSAzOwogICAgICAgICAgICB3aGlsZSAoZCA+IDApIHsKICAgICAgICAgICAgICAgIGlmICgoZCAmIDEpID09IDEpIHsKICAgICAgICAgICAgICAgICAgICByZXMgPSAocmVzKmEpJWM7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBhID0gKGEqYSklYzsKICAgICAgICAgICAgICAgIGQgPj49IDE7CiAgICAgICAgICAgIH0KCgoKICAgICAgICAgICAgcmVzID0gKHJlbSpyZXMpJWM7CiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihyZXMpOwogICAgICAgIH0KICAgIH0KfQovKjEwMDAwMDAKNjE5ODA3MTY0Cjk5OTk5OQoxNTQ5NTE3OTEKMjIKODc0OCov