#include #include #include #include #include #include #include #include #include using namespace std; typedef long long int ll; typedef pair Pii; const ll mod = 1000000007; ll modpow(ll a, ll b, ll m = mod) { ll r = 1; while (b > 0) { if (b & 1) r = (r * a) % m; a = (a * a) % m; b >>= 1; } return r; } ll modinv(ll x, ll m = mod) { ll b = m; ll u = 1; ll v = 0; ll tmp; while (b) { ll t = x / b; x -= t * b; tmp = x; x = b; b = tmp; u -= t * v; tmp = u; u = v; v = tmp; } u %= m; if (u < 0) u += m; return u; } int main() { cin.tie(0); ios::sync_with_stdio(false); int s; cin >> s; vector n(s), m(s), x(s); for (int i = 0; i < s; i++) cin >> n[i] >> m[i] >> x[i]; vector ans(s); for (int i = 0; i < s; i++) { if (x[i]) ans[i] = ((modpow(m[i]+1, n[i]) - modpow(1-m[i], n[i])) % mod * modinv(2)) % mod; else ans[i] = ((modpow(1-m[i], n[i]) + modpow(m[i]+1, n[i])) % mod * modinv(2)) % mod; if (ans[i] < 0) ans[i] += mod; } for (auto &y: ans) cout << y << endl; return 0; }