import java.util.Arrays; import java.util.Scanner; class Solution3 { static long[] fact; static long[] ifact; public static void main(String[] args) { Scanner in = new Scanner(System.in); int mod = 100003; fact = new long[mod]; ifact = new long[mod]; fact[0] = 1; ifact[0] = 1; for(int i = 1; i < mod; i++) { fact[i] = i * fact[i - 1] % mod; ifact[i] = modInverse(i, mod) * ifact[i - 1] % mod; } int T = in.nextInt(); for(int t = 0; t < T; t++) { long N = in.nextLong(); long K = in.nextLong(); // number of ones = K, number of zeros = N - K // ans = (N - K + 1) choose K // (N - K + 1) choose k long num = N - K + 1; long den = K; System.out.println(modBinomial(num, den, mod)); } } public static long mod(long a, long m) { a %= m; return a >= 0 ? a : a + m; } public static long modInverse(long a, long m) { a = mod(a, m); return a == 0 ? 0 : mod((1 - modInverse(m % a, a) * m) / a, m); } public static long modBinomial(long n, long k, long p) { long prod = 1; while(n > 0 || k > 0) { int nextN = (int)(n % p); int nextK = (int)(k % p); if(nextN < nextK) { return 0; } prod *= ((fact[nextN] * ifact[nextN - nextK] % p) * ifact[nextK]) % p; n /= p; k /= p; } return prod % p; } }