#include <cstdio>
#include <cstdlib>
#include <algorithm>

typedef unsigned long long ull;

using namespace std;

ull n, k;

const ull PRIME = 100003;

ull facto [PRIME+1];
ull invfacto[PRIME+1];

ull nbase[5];
ull kbase[5];

ull fmm(ull a, ull b){
	ull ret = 0;
	if(b == 0){
		ret = 1;
	} else if(b == 1){
		ret = a;
	} else{
		if(b % 2 == 0){
			ull part = fmm(a, b/2);
			ret = (part*part)%PRIME;
		} else{
			ull part = fmm(a, b/2);
			ret = ((part*part)%PRIME * a)%PRIME;
		}
	}
	return ret;
}

void preprocess(){
	facto[0] = invfacto[0] = 1;
	for(int i = 1; i <= PRIME; i++){
		ull ii = i;
		facto[i] = (facto[i-1]*ii)%PRIME;
		invfacto[i] = fmm(facto[i], PRIME-2);
	}
}

bool read(){
	scanf("%llu %llu", &n, &k);
	return true;		
}

int fact(ull k, ull * f){
	ull ck = k;
	int i = 0;
	ull mp = PRIME;
	while(ck > 0){
		f[i] = ck%mp;
		ck = (ck - f[i])/mp;
		i++;
	}
	return i;
}

ull binom(ull n, ull k){
	ull ret = 0;
	if(k > n){
		ret = 0;
	} else{
		ret = (((facto[n]*invfacto[n-k])%PRIME)*invfacto[k])%PRIME;
	}
	return ret;
}

void process(){
	int digits = 0;
	for(int i = 0; i < 5; i++){
		nbase[i] = kbase[i] = 0;
	}
	digits = max(digits, fact(n-k+1, nbase));
	digits = max(digits, fact(k, kbase));
	ull result = 1;

	for(int i = 0; i < digits; i++){
		result = (result*binom(nbase[i], kbase[i]))%PRIME;
		// printf("%llu %llu\n", nbase[i], kbase[i]);
	}

	printf("%llu\n", result);
}

int main(){
	int cases;
	scanf("%d", &cases);
	preprocess();
	while(cases-- && read()){
		process();
	}
	return 0;
}