#include<bits/stdc++.h>
#define int long long
#define ld long double
#define fi first
#define se second
#define vll vector<int>
#define pii pair<int,int>
#define pb push_back
#define sz(v) (int)(v).size()
#define inf (int)(1e18)
#define md (int)(1e9+7)
#define all(v) (v).begin(),(v).end()
#define rep(i,a,b) for(int i=a;i<b;++i)
using namespace std;

const int M = 2e5 + 10;

int ex(int a,int b=md-2){
	int ans=1;
	while(b) {
		if(b&1) ans=(ans*a)%md;
		a=(a*a)%md,b/=2;
	}
	return ans;
} 
inline int add(int a,int b){
	a+=b;
	if(a>=md) a-=md;
	return a;
}
inline int sub(int a,int b){
	a-=b;
	if(a<0) a+=md;
	return a;
}
inline int mul(int a,int b){
	return (a*b)%md;
}

int f[M],iv[M];
int C(int n,int r){
	if(n<r) return 0;
	return mul(f[n],mul(iv[r],iv[n-r]));
}

void init(){
	f[0]=1;
	for(int i=1;i<M;++i) {
		f[i]=mul(i,f[i-1]);
	}
	iv[M-1]=ex(f[M-1]);
	for(int i=M-2;i>=0;--i) {
		iv[i]=mul(i+1,iv[i+1]);
	}
}

int32_t main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
   	
   	init();
   	
   	int tc;
   	cin>>tc;
   	while(tc--) {
   		int n,k;
   		cin>>n>>k;
   		int ans=0;
   		for(int i=1;(i-1)*(k-1)<=n;++i) {
   			ans=add(ans,mul(C(n-(i-1)*(k-1),i),mul(f[i],f[n-i])));
   		}
   		ans=mul(ans,iv[n]);
   		ans=add(ans,1);
   		cout<<ans<<"\n";
   	}
   	
   	
    return 0;
}