#include<bits/stdc++.h>
#define ll long long
#define pk push_back
#define pii pair<int,int>
#define mk make_pair
#define fi first
#define se second
const int maxn=1e5;
const int mo=1e9+7;
using namespace std;
int rd(){
	int x=0,f=1;char c=getchar();
	while(!isdigit(c)){if(c=='-')f=-1;c=getchar();}
	while(isdigit(c))x=(x<<3)+(x<<1)+c-'0',c=getchar();
	return x*f;
}
int ksm(int a,int b){int sum=1;for(;b;b>>=1,a=1LL*a*a%mo)if(b&1)sum=1LL*sum*a%mo;return sum;}
int t,k,n,fac[maxn+5],inv[maxn+5],ans;
int C(int x,int y){
	if(x<y)return 0;
	return 1LL*fac[x]*inv[y]%mo*inv[x-y]%mo;
}
int main(){
	t=rd();
	fac[0]=1;for(int i=1;i<=maxn;i++)fac[i]=1LL*fac[i-1]*i%mo;
	inv[maxn]=ksm(fac[maxn],mo-2);for(int i=maxn;i>=1;i--)inv[i-1]=1LL*inv[i]*i%mo;
	for(;t;t--){
		n=rd();k=rd();ans=1;	
		for(int i=1;i<=n;i++){
			if((k-1)*(i-1)>n)break;
			ans=(ans+1LL*fac[i]*inv[n]%mo*fac[n-i]%mo*C(n-(k-1)*(i-1),i)%mo)%mo;
		}
		printf("%d\n",ans);
	}
	return 0;
}
