#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAXN = 100000;
const int MOD = 1000000007;
ll fact[MAXN + 1], ifact[MAXN + 1];
// Function to compute (base^exp) % MOD using Binary Exponentiation
ll power(ll base, ll exp, ll mod) {
ll result = 1;
while (exp > 0) {
if (exp % 2 == 1) result = (result * base) % mod;
base = (base * base) % mod;
exp /= 2;
}
return result;
}
// Precompute Factorial and Inverse Factorial
void precompute() {
fact[0] = ifact[0] = 1;
for (int i = 1; i <= MAXN; i++) {
fact[i] = (fact[i - 1] * i) % MOD;
}
ifact[MAXN] = power(fact[MAXN], MOD - 2, MOD); // Fermat's theorem
for (int i = MAXN - 1; i >= 1; i--) {
ifact[i] = (ifact[i + 1] * (i + 1)) % MOD;
}
}
// Compute nCr % MOD
ll nCr(int n, int r) {
if (r > n || r < 0) return 0;
return (fact[n] * ifact[r] % MOD) * ifact[n - r] % MOD;
}
int main() {
precompute();
int t, n, r;
cin >> t;
while (t--) {
cin >> n >> r;
cout << nCr(n, r) << endl;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnR5cGVkZWYgbG9uZyBsb25nIGxsOwpjb25zdCBpbnQgTUFYTiA9IDEwMDAwMDsKY29uc3QgaW50IE1PRCA9IDEwMDAwMDAwMDc7CgpsbCBmYWN0W01BWE4gKyAxXSwgaWZhY3RbTUFYTiArIDFdOwoKLy8gRnVuY3Rpb24gdG8gY29tcHV0ZSAoYmFzZV5leHApICUgTU9EIHVzaW5nIEJpbmFyeSBFeHBvbmVudGlhdGlvbgpsbCBwb3dlcihsbCBiYXNlLCBsbCBleHAsIGxsIG1vZCkgewogICAgbGwgcmVzdWx0ID0gMTsKICAgIHdoaWxlIChleHAgPiAwKSB7CiAgICAgICAgaWYgKGV4cCAlIDIgPT0gMSkgcmVzdWx0ID0gKHJlc3VsdCAqIGJhc2UpICUgbW9kOwogICAgICAgIGJhc2UgPSAoYmFzZSAqIGJhc2UpICUgbW9kOwogICAgICAgIGV4cCAvPSAyOwogICAgfQogICAgcmV0dXJuIHJlc3VsdDsKfQoKLy8gUHJlY29tcHV0ZSBGYWN0b3JpYWwgYW5kIEludmVyc2UgRmFjdG9yaWFsCnZvaWQgcHJlY29tcHV0ZSgpIHsKICAgIGZhY3RbMF0gPSBpZmFjdFswXSA9IDE7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBNQVhOOyBpKyspIHsKICAgICAgICBmYWN0W2ldID0gKGZhY3RbaSAtIDFdICogaSkgJSBNT0Q7CiAgICB9CiAgICBpZmFjdFtNQVhOXSA9IHBvd2VyKGZhY3RbTUFYTl0sIE1PRCAtIDIsIE1PRCk7IC8vIEZlcm1hdCdzIHRoZW9yZW0KICAgIGZvciAoaW50IGkgPSBNQVhOIC0gMTsgaSA+PSAxOyBpLS0pIHsKICAgICAgICBpZmFjdFtpXSA9IChpZmFjdFtpICsgMV0gKiAoaSArIDEpKSAlIE1PRDsKICAgIH0KfQoKLy8gQ29tcHV0ZSBuQ3IgJSBNT0QKbGwgbkNyKGludCBuLCBpbnQgcikgewogICAgaWYgKHIgPiBuIHx8IHIgPCAwKSByZXR1cm4gMDsKICAgIHJldHVybiAoZmFjdFtuXSAqIGlmYWN0W3JdICUgTU9EKSAqIGlmYWN0W24gLSByXSAlIE1PRDsKfQoKCmludCBtYWluKCkgewogICAgcHJlY29tcHV0ZSgpOwogICAgaW50IHQsIG4sIHI7CiAgICBjaW4gPj4gdDsKICAgIHdoaWxlICh0LS0pIHsKICAgICAgICBjaW4gPj4gbiA+PiByOwogICAgICAgIGNvdXQgPDwgbkNyKG4sIHIpIDw8IGVuZGw7CiAgICB9CiAgICByZXR1cm4gMDsKfQ==