#include <bits/stdc++.h>
using namespace std;
struct cmp {
  bool operator()(long long a, long long b) { return (a > b); }
};
long long ceil(const long long &a, const long long &b) {
  if (a % b == 0) return a / b;
  return a / b + 1;
}
const long long mod = 1000003;
const long long N = 1000002;
long long fact[N], invfact[N];
long long POW(long long a, long long b, long long mod) {
  if (b == 0)
    return 1 % mod;
  else {
    long long tmp = POW(a, b / 2, mod) % mod;
    if (b % 2 == 0)
      return (tmp % mod * tmp % mod) % mod;
    else
      return ((a % mod * (tmp % mod * tmp % mod) % mod)) % mod;
  }
}
long long modinv(long long k) { return POW(k, mod - 2, mod); }
void precompute() {
  fact[0] = fact[1] = 1;
  for (long long i = 2; i < N; i++) {
    fact[i] = fact[i - 1] * i;
    fact[i] %= mod;
  }
  invfact[N - 1] = modinv(fact[N - 1]);
  for (long long i = N - 2; i >= 0; i--) {
    invfact[i] = invfact[i + 1] * (i + 1);
    invfact[i] %= mod;
  }
}
long long nCr(long long x, long long y) {
  if (y > x) return 0;
  long long num = fact[x];
  num *= invfact[y];
  num %= mod;
  num *= invfact[x - y];
  num %= mod;
  return num;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  precompute();
  long long n, k;
  cin >> n >> k;
  long long sum = 0;
  for (long long i = 0; i < n; i++) {
    sum = (sum + nCr(i + k, k - 1)) % mod;
  }
  cout << sum;
  return 0;
}
