using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace TheLovers { internal class Program { private const long PrimeNumber = 100003; // private static void Main(string[] args) // { // for (int i = 0; i < 1000; i++) // { // for (int j = 0; j < 1000; j++) // { // Combinations(i, j); // } // } // } private static void Main(string[] args) { int t = int.Parse(Console.ReadLine()); for (int i = 0; i < t; i++) { HandleTestCase(); } } private static void HandleTestCase() { string[] nkSplit = Console.ReadLine().Split(' '); long n = long.Parse(nkSplit[0]); long k = long.Parse(nkSplit[1]); Console.WriteLine(Combinations((n - k + 1), k)); } private static long Degree(long n) { long degree = 0; long u = PrimeNumber; while (u <= n) { degree += n/u; u *= PrimeNumber; } return degree; } private static long Combinations(long n, long k) { if (k > n || k < 0) { return 0; } if (n < k) { return 0; } if (0 == n) { return 0; } if (0 == k) { return 1; } if (n == k) { return 1; } if (1 == k) { return n%PrimeNumber; } if (n > PrimeNumber || k > PrimeNumber) { long nd = n/PrimeNumber; long nr = n%PrimeNumber; long kd = k/PrimeNumber; long kr = k%PrimeNumber; return ((Combinations(nd, kd)*Combinations(nr, kr))%PrimeNumber); } long numDegree = Degree(n) - Degree(n - k); long denDegree = Degree(k); if (numDegree > denDegree) { return 0; } long res = 1; for (long i = n; i > n - k; --i) { long ti = i; while (ti%PrimeNumber == 0) { ti /= PrimeNumber; } res = (res*ti)%PrimeNumber; } long denom = 1; for (long i = 1; i <= k; ++i) { long ti = i; while(ti % PrimeNumber == 0) { ti /= PrimeNumber; } denom = (denom * ti)%PrimeNumber; } res = (res * Power(denom, PrimeNumber-2)) % PrimeNumber; return res; } private static long Power(long n, long k) { long res = 1; long cur = n; while (k > 0) { if (k%2 != 0) { res = (res*cur)%PrimeNumber; } k /= 2; cur = (cur * cur) % PrimeNumber; } return res; } } }