#include <bits/stdc++.h>
using namespace std;
const int MaxN = 1e6 + 5, Pt = 1e6 + 3;
long long ans, m, n, c, f[MaxN], x;
void Init() {
  scanf("%I64d %I64d", &n, &c);
  f[0] = 1;
  for (int i = 1; i <= 1000000; i++) f[i] = f[i - 1] * i % Pt;
}
long long Pow_mod(long long a, long long n, long long m) {
  if (n == 0) return 1;
  x = Pow_mod(a, n / 2, m);
  long long W = x * x % m;
  if (n % 2 == 1) W = W * a % m;
  return W;
}
long long Lucas(long long n, long long k, long long p) {
  long long ret = 1;
  while (n && k) {
    long long nn = n % p, kk = k % p;
    if (nn < kk) return 0;
    ret = ret * f[nn] * Pow_mod(f[kk] * f[nn - kk] % p, p - 2, p) % p;
    n /= p;
    k /= p;
  }
  return ret;
}
void pdo() {
  ans = 0;
  for (int i = 1; i <= n; i++) {
    ans = (ans + Lucas(i + c - 1, i, Pt)) % Pt;
  }
  printf("%I64d\n", ans);
}
int main() {
  Init();
  pdo();
}
