#include <bits/stdc++.h>
using namespace std;
const long long modulo = 1000003;
long long mod(long long x, long long m = modulo) {
  x %= m;
  x += m;
  x %= m;
  return x;
}
long long power(long long x, long long a) {
  x = mod(x);
  a = mod(a, modulo - 1);
  long long ret = 1;
  long long k = 1;
  while (a) {
    if ((k & a) > 0) {
      a ^= k;
      ret = mod(ret * x);
    }
    k <<= 1;
    x = mod(x * x);
  }
  return ret;
}
long long inv(long long x) { return power(x, -1); }
long long w, h;
map<int, int> X;
long long ans(long long c) {
  if (c <= 0) return 1;
  if (X.count(c)) return X[c];
  if (c <= w) return X[c] = power(h + 1, c);
  long long ret = 0;
  long long m = c / 2;
  {
    ret += ans(m) * ans(c - m - 1);
    ret %= modulo;
  }
  long long x = 1;
  for (int sz = 1; sz <= w; sz++) {
    x *= h;
    x %= modulo;
    for (int t = 0; t < sz && m - t >= 0; t++) {
      if (c - (m - t + sz) >= 0)
        ret += x * ans(m - t - 1) * ans(c - (m - t + sz) - 1);
      ret %= modulo;
    }
  }
  return X[c] = ret;
}
int main() {
  ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  long long c;
  cin >> c >> w >> h;
  cout << ans(c) << "\n";
}
