#include using namespace std; #include using namespace atcoder; using mint=modint1000000007; using ll=long long; using pp=pair; #define sr string #define vc vector #define fi first #define se second #define rep(i,n) for(ll i=0;i<(ll)n;i++) #define pb push_back #define all(v) v.begin(),v.end() #define pque priority_queue #define bpc(a) __builtin_popcount(a) int main(){ ll t;cin>>t; rep(z,t){ ll n,m,x;cin>>n>>m>>x; auto merge=[&](pp a,pp b)->pp{ return {a.fi*b.fi+a.se*b.se,a.fi*b.se+a.se*b.fi}; }; pp e={1,m}; auto f=[&](auto f,ll a)->pair{ if(a==1)return e; auto res=f(f,a/2); res=merge(res,res); if(a&1)res=merge(res,e); return res; }; pp res=f(f,n); if(x==0)cout<