超難
程式碼反白了 建議先研究會了再用
#include <bits/stdc++.h>
using namespace std;
using int64 = long long;
int64 modmul(int64 a, int64 b, int64 mod){
return (int64)((__int128)a * b % mod);
}
int64 modpow(int64 a, long long e, int64 mod){
int64 res = 1 % mod;
a %= mod;
while(e){
if(e & 1) res = modmul(res, a, mod);
a = modmul(a, a, mod);
e >>= 1;
}
return res;
}
// 擴展 gcd(用 __int128 做中間運算以避免溢位)
int64 egcd(int64 a, int64 b, int64 &x, int64 &y){
if(b == 0){
x = 1; y = 0;
return a;
}
int64 x1, y1;
int64 g = egcd(b, a % b, x1, y1);
__int128 t = (__int128)(a / b) * (__int128)y1;
x = y1;
__int128 yy = (__int128)x1 - t;
y = (int64)yy;
return g;
}
int64 modinv(int64 a, int64 mod){
int64 x, y;
int64 g = egcd(a, mod, x, y);
if(g != 1) return -1;
x %= mod;
if(x < 0) x += mod;
return x;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int T;
if(!(cin >> T)) return 0;
while(T--){
long long n, m, l;
cin >> n >> m >> l;
int64 mod = n + 1;
int64 pow2 = modpow(2, m, mod);
int64 inv = modinv(pow2, mod);
int64 ans = modmul(l % mod, inv, mod);
if(ans == 0) ans = mod;
cout << ans << '\n';
}
return 0;
}