import java.util.Scanner;
public class Main {
static final int MAX = 100000;
static final int MOD = 1_000_000_007;
static long[] factorial = new long[MAX + 1];
static long[] invFactorial = new long[MAX + 1];
static long modPower(long base, long exp) {
long result = 1;
while (exp > 0) {
if ((exp & 1) == 1) {
result = (result * base) % MOD;
}
base = (base * base) % MOD;
exp >>= 1;
}
return result;
}
static void prepareFactorials() {
factorial[0] = invFactorial[0] = 1;
for (int i = 1; i <= MAX; i++) {
factorial[i] = (factorial[i - 1] * i) % MOD;
}
invFactorial[MAX] = modPower(factorial[MAX], MOD - 2);
for (int i = MAX - 1; i >= 1; i--) {
invFactorial[i] = (invFactorial[i + 1] * (i + 1)) % MOD;
}
}
static long nCr(int n, int r) {
if (r < 0 || r > n) return 0;
return factorial[n] * invFactorial[r] % MOD * invFactorial[n - r] % MOD;
}
public static void main
(String[] args
) { Scanner sc
= new Scanner
(System.
in);
prepareFactorials();
int testCases = sc.nextInt();
while (testCases-- > 0) {
int n = sc.nextInt();
int r = sc.nextInt();
System.
out.
println(nCr
(n, r
)); }
sc.close();
}
}
aW1wb3J0IGphdmEudXRpbC5TY2FubmVyOwoKcHVibGljIGNsYXNzIE1haW4gewogICAgc3RhdGljIGZpbmFsIGludCBNQVggPSAxMDAwMDA7CiAgICBzdGF0aWMgZmluYWwgaW50IE1PRCA9IDFfMDAwXzAwMF8wMDc7CiAgICBzdGF0aWMgbG9uZ1tdIGZhY3RvcmlhbCA9IG5ldyBsb25nW01BWCArIDFdOwogICAgc3RhdGljIGxvbmdbXSBpbnZGYWN0b3JpYWwgPSBuZXcgbG9uZ1tNQVggKyAxXTsKCiAgICBzdGF0aWMgbG9uZyBtb2RQb3dlcihsb25nIGJhc2UsIGxvbmcgZXhwKSB7CiAgICAgICAgbG9uZyByZXN1bHQgPSAxOwogICAgICAgIHdoaWxlIChleHAgPiAwKSB7CiAgICAgICAgICAgIGlmICgoZXhwICYgMSkgPT0gMSkgewogICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIGJhc2UpICUgTU9EOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJhc2UgPSAoYmFzZSAqIGJhc2UpICUgTU9EOwogICAgICAgICAgICBleHAgPj49IDE7CiAgICAgICAgfQogICAgICAgIHJldHVybiByZXN1bHQ7CiAgICB9CgogICAgc3RhdGljIHZvaWQgcHJlcGFyZUZhY3RvcmlhbHMoKSB7CiAgICAgICAgZmFjdG9yaWFsWzBdID0gaW52RmFjdG9yaWFsWzBdID0gMTsKICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8PSBNQVg7IGkrKykgewogICAgICAgICAgICBmYWN0b3JpYWxbaV0gPSAoZmFjdG9yaWFsW2kgLSAxXSAqIGkpICUgTU9EOwogICAgICAgIH0KCiAgICAgICAgaW52RmFjdG9yaWFsW01BWF0gPSBtb2RQb3dlcihmYWN0b3JpYWxbTUFYXSwgTU9EIC0gMik7CiAgICAgICAgZm9yIChpbnQgaSA9IE1BWCAtIDE7IGkgPj0gMTsgaS0tKSB7CiAgICAgICAgICAgIGludkZhY3RvcmlhbFtpXSA9IChpbnZGYWN0b3JpYWxbaSArIDFdICogKGkgKyAxKSkgJSBNT0Q7CiAgICAgICAgfQogICAgfQoKICAgIHN0YXRpYyBsb25nIG5DcihpbnQgbiwgaW50IHIpIHsKICAgICAgICBpZiAociA8IDAgfHwgciA+IG4pIHJldHVybiAwOwogICAgICAgIHJldHVybiBmYWN0b3JpYWxbbl0gKiBpbnZGYWN0b3JpYWxbcl0gJSBNT0QgKiBpbnZGYWN0b3JpYWxbbiAtIHJdICUgTU9EOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKICAgICAgICBTY2FubmVyIHNjID0gbmV3IFNjYW5uZXIoU3lzdGVtLmluKTsKCiAgICAgICAgcHJlcGFyZUZhY3RvcmlhbHMoKTsKCiAgICAgICAgaW50IHRlc3RDYXNlcyA9IHNjLm5leHRJbnQoKTsKICAgICAgICB3aGlsZSAodGVzdENhc2VzLS0gPiAwKSB7CiAgICAgICAgICAgIGludCBuID0gc2MubmV4dEludCgpOwogICAgICAgICAgICBpbnQgciA9IHNjLm5leHRJbnQoKTsKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKG5DcihuLCByKSk7CiAgICAgICAgfQoKICAgICAgICBzYy5jbG9zZSgpOwogICAgfQp9Cg==