#include using namespace std; const long long oo=1000000007; long long n,a,b; struct Tnode { long long add,mul; }; long long mul,add; Tnode doit2(long long n) { Tnode res; res.mul=n*n*n; res.add=(n-1)*n*n; if (n%2==0) { Tnode res2; res2=doit2(n/2); res2.mul=res2.mul*7; res2.add=res2.add*7; res2.add=res2.add+18*(n/2)*(n/2); if ((1.0*res2.add*a+res2.mul*b)<(1.0*res.add*a+res.mul*b)) res=res2; } return res; } Tnode now; Tnode now2; void doit(long long n) { if (n<=32) { now=doit2(n); return ; } if (n%2==0) { doit(n/2); now.add=(now.add*7)%oo; now.mul=(now.mul*7)%oo; now.add=(now.add+(18*(n/2)) %oo * (n/2) %oo)%oo; } else { now.add=(((n-1)*n % oo )*n) %oo; now.mul=(( (n*n) % oo )*n) %oo; } } void work() { cin >> n >> a >> b; doit(n); std::cout << ((now.add*a)%oo+(now.mul*b)%oo)%oo << std::endl; } int main() { int T; cin >> T; while (T--) work(); return 0; }