#include <bits/stdc++.h>
using namespace std;
const int MOD = 1000003;
void sync_stdio() {
  cin.tie(NULL);
  ios_base::sync_with_stdio(false);
}
struct Sync_stdio {
  Sync_stdio() {
    cin.tie(NULL);
    ios_base::sync_with_stdio(false);
  }
} _sync_stdio;
struct FAIL {
  FAIL() {
    cout << "CHANGE!!!"
         << "\n";
  }
};
long long pow_mod(long long x, long long y) {
  if (y == 0) {
    return 1;
  }
  if (y % 2 == 1) {
    return (x * pow_mod(x, y - 1)) % MOD;
  }
  long long t = (pow_mod(x, y / 2));
  return (t * t) % MOD;
}
vector<long long> fact;
vector<long long> invfact;
inline long long inv(long long x) { return pow_mod(x, MOD - 2); }
inline long long comb(long long n, long long k) {
  if (n < k) {
    return 0;
  }
  if (k < 0) {
    return 0;
  }
  return fact[n] * invfact[k] % MOD * invfact[n - k] % MOD;
}
void init(int n) {
  fact.resize(n);
  invfact.resize(n);
  fact[0] = 1;
  invfact[0] = 1;
  for (int i = (1); i < (n); ++i) {
    fact[i] = fact[i - 1] * i % MOD;
    invfact[i] = inv(fact[i]);
  }
}
int main() {
  int n, c;
  cin >> n >> c;
  init(800000);
  long long res = 0;
  for (int i = (1); i < (n + 1); ++i) {
    res += comb(i + c - 1, c - 1);
    res %= MOD;
  }
  cout << res;
}
