#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=2e7+10,INF=0x3f3f3f3f,Mod=1e9+7;
int read()
{
int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9')
{
if(ch=='-')
f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9')
x=x*10+ch-'0',ch=getchar();
return x*f;
}
void Write(int x)
{
if(x<0)
{
putchar('-'),Write(-x);
return;
}
if(x<10)
{
putchar(x+'0');
return;
}
Write(x/10),putchar(x%10+'0');
}
void write(int x,char *s)
{
Write(x),printf("%s",s);
}
int fac[N]={1},inv[N];
int power(int a,int b)
{
int ans=1;
while(b)
{
if(b&1)
ans=ans*a%Mod;
b>>=1,a=a*a%Mod;
}
return ans;
}
void init()
{
int n=2e7;
for(int i=1;i<=n;i++)
fac[i]=fac[i-1]*i%Mod;
inv[n]=power(fac[n],Mod-2);
for(int i=n-1;~i;i--)
inv[i]=inv[i+1]*(i+1)%Mod;
}
int C(int n,int m)
{
if(n<m||m<0)
return 0;
return fac[n]*inv[m]%Mod*inv[n-m]%Mod;
}
void solve()
{
int n=read(),k=read();
if(n==1)
{
write(k,"\n");
return;
}
int p=k+1>>1;
write((k*C(n+p-2,n-1)%Mod-2*(n-1)%Mod*C(n+p-2,n)%Mod+Mod)%Mod,"\n");
}
signed main()
{
init();
int T=read();
while(T--)
solve();
}