#include using namespace std; using LL = long long; using LD = long double; #define FOR(i, x, y) for (decay::type i = (x), _##i = (y); i < _##i; ++i) #define FORD(i, x, y) for (decay::type i = (x), _##i = (y); i > _##i; --i) #ifdef zerol #define dbg(x...) \ do \ { \ cerr << "\033[32;1m" << #x << " -> "; \ err(x); \ } while (0) #else #define dbg(...) #endif // zerol void err() { cerr << "\033[39;0m" << endl; } template void err(T a, A... x) { cerr << a << ' '; err(x...); } // ---------------------------------------------------------------------------------------- const int MOD = 1e9 + 7; int a, b; typedef pair P; P get_ans(int n) { if (n == 0) { dbg(b, b); return P(b, b); } LL m = (1LL << n) % MOD; LD mm = pow(2, n); LL m2 = (1LL << (n - 1)) % MOD; LD mm2 = pow(2, n - 1); // dbg(m, m2); auto val = get_ans(n - 1); LL A = (m * m % MOD * m % MOD * b % MOD + (m - 1) * m % MOD * m % MOD * a) % MOD; LD AA = mm * mm * mm * b + (mm - 1) * mm * mm * a; LL B = (18LL * m2 % MOD * m2 % MOD * a % MOD + 7LL * val.second) % MOD; LD BB = 18 * mm2 * mm2 * a + 7 * val.first; dbg(A, AA, B, BB); return min(P(AA, A), P(BB, B)); } int main() { dbg(1LL << 31); dbg(1LL << 32); int T; cin >> T; while (T--) { LL n; cin >> n >> a >> b; int t = 0; while (n > 1) { n >>= 1; ++t; } auto val = get_ans(t); LL ans = (val.second % MOD + MOD) % MOD; cout << ans << endl; } return 0; }