#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;

long long degree( long a,  long k,  long p) {
   long res = 1;
   long cur = a;

  while (k) {
    if (k%2) {
      res = (res * cur)%p;
    }
    k /= 2;
    cur = (cur * cur) % p;
  }
  return res;
}



int get_degree( long n,  long p) { // returns the degree with which p is in n!
  int degree_num = 0;
   long u = p;
   long temp = n;
  while (u <= temp) {
    degree_num += temp/u;
    u *= p;
  }
  return degree_num;
}

long factmod (long n, long p) {
   long res = 1;
   while (n > 1) {
      long long cur = 1;
      for (int i=2; i<p; ++i)
         cur = (cur * i) % p;
      res = (res * degree (cur, n/p, p)) % p;
      for (int i=2; i<=n%p; ++i)
         res = (res * i) % p;
      n /= p;
   }
   return (res % p);
}

 long combinations( long n,  long k,  long p) {
  int num_degree = get_degree(n,p) - get_degree(n- k,p);
  int den_degree = get_degree(k,p);
  if (num_degree > den_degree) {
    return 0;
  }
  long res = factmod(n, p);
  long denom = factmod(k, p);
  long denom1 = factmod(n-k, p);
  res = (((res * degree(denom, p-2, p)) % p)*degree(denom1, p-2,p))%p;
  return res;
}

void solve( long houses,  long visits) {
	long available = houses - 2*visits + 1;
	if(available < 0){
		cout << 0 << '\n';
	} else if (available == 0){
		cout << 1 << '\n';
	} else {
		cout << combinations(available+visits, visits, 100003) << '\n';
	}
}

int main() {
    int inputs;
	cin >> inputs;
	for(int i=0; i<inputs; i++){
		 long houses, visits;
		cin >> houses >> visits;
		solve(houses, visits);
	}
}