#include using namespace std; const long long MOD = 1000000007; long long pw(long long a, long long b) { long long r = 1; while (b) { if (b & 1) r = r * a % MOD; a = a * a % MOD; b >>= 1; } return r; } int main() { ios::sync_with_stdio(false); cin.tie(0); int T; cin >> T; while (T--) { string Cstr, Pstr; cin >> Cstr >> Pstr; bool pBig = false; if (Pstr.size() > 10) pBig = true; else if (Pstr.size() == 10 && Pstr >= "1000000007") pBig = true; if (pBig) { cout << 0 << "\n"; continue; } long long P = 0; for (char ch : Pstr) P = P * 10 + (ch - '0'); if (Cstr.size() <= 10) { long long C = 0; for (char ch : Cstr) C = C * 10 + (ch - '0'); if (C < 2 * P - 1) { cout << 0 << "\n"; continue; } } long long cmod = 0; for (char ch : Cstr) cmod = (cmod * 10 + (ch - '0')) % MOD; long long n = (cmod - P + 1) % MOD; if (n < 0) n += MOD; if (n < P) { cout << 0 << "\n"; continue; } long long ans = 1; if (P <= MOD - 1 - P) { for (long long i = 0; i < P; i++) { ans = ans * (n - i) % MOD; } } else { long long comp = 1; for (long long i = 1; i <= n - P; i++) { comp = comp * i % MOD; } for (long long i = n + 1; i < MOD; i++) { comp = comp * i % MOD; } ans = (MOD - 1) * pw(comp, MOD - 2) % MOD; } cout << ans << "\n"; } return 0; }