#include <map> #include <queue> #include <math.h> #include <stdio.h> #include <string.h> #include <stdlib.h> #include <algorithm> #include <iostream> using namespace std; long long a[1000005]; const long long mod=1000000007; long long quick(long long a,long long b) { long long ans=1; while(b) { if(b&1) { ans=ans*a%mod; b--; } b>>=1; a=a*a%mod; } return ans; } int main() { int T; long long i,n,m,k; a[1]=1; for(i=2; i<=1000000; i++) a[i]=(a[i-1]*i)%mod; scanf("%d",&T); while(T--) { scanf("%lld%lld%lld",&n,&m,&k); if(m==1) printf("%lld\n",n); else if(m+m*k>n) printf("0\n"); else if(m+m*k==n) printf("%lld\n",k+1); else { long long y=m-1; long long x=n-m*k-1; long long ans=a[x]*quick(a[x-y],mod-2)%mod*quick(a[y],mod-2)%mod; printf("%lld\n",n*ans%mod*quick(m,mod-2)%mod); } } return 0; }