#include<bits/stdc++.h>
#define llu unsigned long long
using namespace std;
llu modexp(llu a, llu b,llu m)
{
if(b==0) return 1;
llu temp=modexp(a,b/2,m);
if(b%2==1) return (((temp%m)*(temp%m))%m*(a%m))%m;
return ((temp%m)*(temp%m))%m;
}
int main()
{
llu n,m,k,ans,t;
const llu mod=1000000007;
scanf("%lld\n",&t);
while(t--)
{
scanf("%lld %lld %lld\n",&n,&k,&m);
ans=1;
if(m>n) printf("Sweg\n");
else
{
if(m==1) ans=modexp(k,n,mod);
else
{
if(m==n)
{
ans=modexp(k,(n+1)/2,mod);
}
else
{
if(m%2==1) ans=(k%mod*k%mod)%mod;
else ans=k%mod;
}
}
printf("%lld\n",ans);
}
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBsbHUgdW5zaWduZWQgbG9uZyBsb25nCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmxsdSBtb2RleHAobGx1IGEsIGxsdSBiLGxsdSBtKQp7CiAgICBpZihiPT0wKSByZXR1cm4gMTsKICAgIGxsdSB0ZW1wPW1vZGV4cChhLGIvMixtKTsKICAgIGlmKGIlMj09MSkgcmV0dXJuICgoKHRlbXAlbSkqKHRlbXAlbSkpJW0qKGElbSkpJW07CiAgICByZXR1cm4gKCh0ZW1wJW0pKih0ZW1wJW0pKSVtOwp9CmludCBtYWluKCkKewoJbGx1IG4sbSxrLGFucyx0OwoJY29uc3QgbGx1IG1vZD0xMDAwMDAwMDA3OwoJc2NhbmYoIiVsbGRcbiIsJnQpOwoJd2hpbGUodC0tKQogICAgewogICAgICAgIHNjYW5mKCIlbGxkICVsbGQgJWxsZFxuIiwmbiwmaywmbSk7CiAgICAgICAgYW5zPTE7CiAgICAgICAgaWYobT5uKSBwcmludGYoIlN3ZWdcbiIpOwogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgIGlmKG09PTEpIGFucz1tb2RleHAoayxuLG1vZCk7CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWYobT09bikKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBhbnM9bW9kZXhwKGssKG4rMSkvMixtb2QpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGlmKG0lMj09MSkgYW5zPShrJW1vZCprJW1vZCklbW9kOwogICAgICAgICAgICAgICAgICAgIGVsc2UgYW5zPWslbW9kOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHByaW50ZigiJWxsZFxuIixhbnMpOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAwOwp9