#include #include #include #include #include using namespace std; #define ll long long #define FOR(i,a,b) for(int i=a;i<=b;i++) #define FORD(i,a,b) for(int i=a;i>=b;i--) #define FORL(i,x) for(int i=head[x];i;i=nxt[i]) #define clr(x,y) memset(x,y,sizeof(x)) #define in(a) a=read() #define out(a) printf("%d\n",a) inline ll read(){ char c=getchar();ll f=1,x=0; while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();} while(c>='0'&&c<='9')x=x*10+(c-'0'),c=getchar(); return x*f; } #define mod 1000000007 void MOD(int &x){if(x>=mod)x-=mod;} #define maxn 1000010 #define inf (1<<30) ll n,a,b; ll dfs(ll n){ if(n%2)return n*n*n*b+n*n*(n-1)*a; if(n>100)return (18*a%mod*(n/2)%mod*(n/2)%mod+7*dfs(n/2)%mod)%mod; if(!n)return 0; return min(n*n*n*b+n*n*(n-1)*a,18*a*(n/2)*(n/2)+7*dfs(n/2)); } int main(){ int t; in(t); while(t--){ in(n);in(a);in(b); printf("%lld\n",dfs(n)%mod); } }