""" →,↓を並べる 全ての場所に関して、異なる場合の数を求めればよい H+W-1 * () """ from sys import stdin import sys def modfac(n, MOD): f = 1 factorials = [1] for m in range(1, n + 1): f *= m f %= MOD factorials.append(f) inv = pow(f, MOD - 2, MOD) invs = [1] * (n + 1) invs[n] = inv for m in range(n, 1, -1): inv *= m inv %= MOD invs[m - 1] = inv return factorials, invs def modnCr(n,r): #上で求めたfacとinvsを引数に入れるべし(上の関数で与えたnが計算できる最大のnになる) return fac[n] * inv[n-r] * inv[r] % mod mod = 10**9+7 fac,inv = modfac(500000,mod) TT = int(stdin.readline()) ANS = [] for loop in range(TT): H,W = map(int,stdin.readline().split()) if min(H,W) == 1: ans = 0 else: ans = (H+W-3) * 2 * modnCr(H+W-4,H-2) ANS.append(str(ans % mod)) print ("\n".join(ANS))