#include <cmath> #include <cstdio> #include <vector> #include <iostream> #include <algorithm> using namespace std; #define MOD 100003 // Combinations, for large n, k, pulled from stackoverflow long long degree(long long a, long long k, long long p) { long long res = 1; long long cur = a; while (k) { if (k%2) { res = (res * cur)%p; } k /= 2; cur = (cur * cur) % p; } return res; } int get_degree(long long n, long long p) { // returns the degree with which p is in n! int degree_num = 0; long long u = p; long long temp = n; while (u <= temp) { degree_num += temp/u; u *= p; } return degree_num; } long long combinations(int n, int k, long long p) { int num_degree = get_degree(n,p) - get_degree(n- k,p); int den_degree = get_degree(k,p); if (num_degree > den_degree) { return 0; } long long res = 1; for (long long i = n; i > n- k; --i) { long long ti = i; while(ti % p == 0) { ti /= p; } res = (res *ti)%p; } long long denom = 1; for (long long i = 1; i <= k; ++i) { long long ti = i; while(ti % p == 0) { ti /= p; } denom = (denom * ti)%p; } res = (res * degree(denom, p-2, p)) % p; return res; } int main() { int t; cin >> t; long long int N, K, m, n, temp; //long long choose[MOD+1][MOD+1]; vector< vector<long long> > choose; for(int i=0; i<t; i++) { cin >> N >> K; m = N-K+1; n = N-K-K+1; if(n < 0 || m < n) cout << 0 << endl; else { cout << combinations(m, n, MOD) << endl; } } return 0; }