#include <stdio.h> #include <stdlib.h> #define mygc(c) (c)=getchar_unlocked() #define mypc(c) putchar_unlocked(c) void reader(long long *x){ int k, m = 0; *x = 0; for (;;){ mygc(k); if (k == '-'){ m = 1; break; }if ('0' <= k&&k <= '9'){ *x = k - '0'; break; } }for (;;){ mygc(k); if (k<'0' || k>'9')break; *x = (*x) * 10 + k - '0'; }if (m)(*x) = -(*x); } void writer(int x, char c){ int sz = 0, m = 0; char buf[10]; if (x<0)m = 1, x = -x; while (x)buf[sz++] = x % 10, x /= 10; if (!sz)buf[sz++] = 0; if (m)mypc('-'); while (sz--)mypc(buf[sz] + '0'); mypc(c); } #define mod (100003LL) long long factorials[mod], inverses[mod], powers[mod]; void factorial(long long n, long long *out1, long long *out2) { *out1 = 1, *out2 = 0; while (n) { long long d = n / mod; if (d % 2) *out1 *= -1; *out1 = ((*out1)*factorials[n % mod]) % mod; *out2 += d; n = d; } } int main() { int i; long long T, N, K, nn, np, dn, dp, out1, out2; reader(&T); powers[0] = factorials[0] = 1; for (i = 1; i < mod; i++) { powers[i] = (powers[i - 1] * 2) % mod; factorials[i] = (factorials[i - 1] * i) % mod; if (i >= mod - i - 1) { inverses[powers[i]] = powers[mod - i - 1]; inverses[powers[mod - i - 1]] = powers[i]; } } for (i = 0; i < T; i++) { reader(&N); reader(&K); if (N - K + 1 < K) { puts("0"); continue; } nn = dn = 1, np = dp = 0; factorial(N - K + 1, &out1, &out2); nn = (nn*out1) % mod; np += out2; factorial(K, &out1, &out2); dn = (dn*out1) % mod; dp += out2; factorial(N - 2*K + 1, &out1, &out2); dn = (dn*out1) % mod; dp += out2; if (np > dp) puts("0"); else { if (dn < 0) dn += mod; nn = (nn*inverses[dn]) % mod; if (nn < 0) nn += mod; writer((int)nn, '\n'); } } return 0; }