#include <bits/stdc++.h>
#define ll long long
using namespace std;
const ll mod = 2147493647;
ll t[7][7]={
{1,2,1,4,6,4,1},
{1,0,0,0,0,0,0},
{0,0,1,4,6,4,1},
{0,0,0,1,3,3,1},
{0,0,0,0,1,2,1},
{0,0,0,0,0,1,1},
{0,0,0,0,0,0,1}
};
struct M{
ll x[7][7];
M () {memset(x,0,sizeof(x));}
M operator * (M b) const{
M ans;
int i,j,k;
for(i = 0;i < 7;i ++)
for(j = 0;j < 7;j ++)
for(k = 0;k < 7;k ++){
ans.x[i][j] += (x[i][k]*b.x[k][j])%mod;
ans.x[i][j] %= mod;
}
return ans;
}
};
void init(M &a){
for(int i = 0;i < 7;i ++) a.x[i][i] = 1;
}
M qpow(M n,int m){
M ans=n;
m --;
while(m){
if(m&1) ans = ans * n;
n = n*n;
m >>= 1;
}
return ans;
}
int main(){
// freopen("a.txt","r",stdin);
ios::sync_with_stdio(0);
int T;
cin>>T;
M tran;
memcpy(tran.x,t,sizeof(tran.x));
while(T --){
int n,a,b;
cin>>n>>a>>b;
if(n==1){
cout<<a<<endl;
continue;
}
if(n==2) {
cout<<b<<endl;
continue;
}
M use = qpow(tran,n-2);
M fir;
fir.x[0][0] = b;
fir.x[1][0] = a;
fir.x[2][0] = 16;
fir.x[3][0] = 8;
fir.x[4][0] = 4;
fir.x[5][0] = 2;
fir.x[6][0] = 1;
fir = use*fir;
cout<<fir.x[0][0]<<endl;
}
return 0;
}