#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

#define MM  100003
#define MP  39452   //2^32 mod MM
#define MR  20360

typedef union NUM
{
    struct {
        unsigned int Lo;
        unsigned int Hi;
    };
    unsigned long long U;
} NUM;

unsigned int Mod(NUM* pNum)
{
    NUM     M;

    while (pNum->Hi || (pNum->Lo >= MM))
    {
        M.U = pNum->U -= MM;
        M.U >>= 16;
        M.U += (M.U>>16)*MR;
        M.U >>= 1;
        pNum->U -= M.U * MM;
    }

    return pNum->Lo;
}

//Calculate X = Y^-1 mod MM, that (X*Y) mod MM == 1
unsigned int RMod(unsigned int Y)
{
    unsigned int f, f1=1, f2=MM-1, r, r1=Y, r2=MM-Y;

    for (;;)
    {
        if (r2 > r1)
        {
            f = f1; r = r1;
            while (r2 > (r+r))
            {
                f<<=1; r<<=1;
                if (f >= MM) f -= MM;
            }
            if (f2 >= f) f2 -= f;
            else f2 += MM - f;
            if ((r2 -= r) < 2) return f2;
        }
        else if (r1 > r2)
        {
            f = f2; r = r2;
            while (r1 > (r+r))
            {
                f<<=1; r<<=1;
                if (f >= MM) f -= MM;
            }
            if (f1 >= f) f1 -= f;
            else f1 += MM - f;
            if ((r1 -= r) < 2) return f1;            
        }
        else
        {
            break;
        }
    }

    return f1;
}

//Calculate (A choose B) mod MM, with a,b < MM
unsigned int CMod(unsigned int A, unsigned int B)
{
    unsigned int m,n;
    NUM         P,Q,M;

    if ((A-B) < B) B = A-B;

    if (B == 0) return 1;

    P.U = 1; Q.U = 1;
    while (B > 0)
    {
        P.U *= A; Q.U *= B;
        Mod(&P); Mod(&Q);
        A--; B--;
    }

    m = RMod(Q.Lo);
    P.U *= m;

    Mod(&P);
    m = P.Lo;

    return m;
}


void MReduce(NUM* pNum, unsigned int *p0, unsigned int* p1, unsigned int* p2)
{
    NUM    M,P=*pNum, Q;

    M.U = 0;
    while (P.Hi || (P.Lo >= MM))
    {
        Q.U = P.U -= MM; M.U ++;
        Q.U >>= 16;
        Q.U += (Q.U>>16)*MR;
        Q.U >>= 1;
        M.U += Q.U; P.U -= Q.U * MM;
    }
    *p0 = P.Lo; P.U = 0;
    while (M.Hi || (M.Lo >= MM))
    {
        Q.U = M.U -= MM; P.U ++;
        Q.U >>= 16;
        Q.U += (Q.U>>16)*MR;
        Q.U >>= 1;
        P.U += Q.U; M.U -= Q.U * MM;
    }
    *p1 = M.Lo;
    *p2 = P.Lo;
}

int main()
{
    /* Enter your code here. Read input from STDIN. Print output to STDOUT */
    unsigned int T,m;
    unsigned int a0, a1, a2, b0, b1, b2;
    NUM         N,K;
    NUM         P,Q;

    N.U = K.U = 0llu;

    scanf("%d\n", &T);
    while (T-- > 0)
    {
        scanf("%llu %llu\n", &(N.U), &(K.U));

        if (N.U < K.U) {printf("0\n"); continue;}
        
        //We are to calculate C(N-K+1, K) mod 100003;
        N.U -= K.U; N.U ++;

        if (N.U < K.U) {printf("0\n"); continue;}

        MReduce(&N, &a0, &a1, &a2);
        //printf("Reduced to %d %d %d\n", a2, a1, a0);
        MReduce(&K, &b0, &b1, &b2);
        //printf("Reduced to %d %d %d\n", b2, b1, b0);
        if ((b0>a0) || (b1>a1) || (b2>a2)) {printf("0\n"); continue;}

        P.Lo = CMod(a0, b0); P.Hi = 0;
        if ((m = CMod(a1, b1)) > 1) {P.U *= m;  Mod(&P);}
        if ((m = CMod(a2, b2)) > 1) {P.U *= m;  Mod(&P);}
        printf("%d\n", P.Lo);
    }
    return 0;
}