#include <bits/stdc++.h>
using namespace std;
struct matrix {
  long long int m[101][101];
  matrix() {
    for (int i = 0; i <= 100; i++) {
      for (int j = 0; j <= 100; j++) m[i][j] = 0;
    }
  }
} mat;
matrix mul(matrix a, matrix b) {
  matrix c;
  for (int i = 0; i <= 100; ++i) {
    for (int j = 0; j <= 100; ++j) {
      c.m[i][j] = 0;
      for (int p = 0; p <= 100; ++p) {
        c.m[i][j] = (c.m[i][j] + a.m[i][p] * b.m[p][j]) % 1000003;
      }
    }
  }
  return c;
}
matrix pow(matrix base, long long int exponent) {
  matrix result;
  for (int i = 0; i <= 100; ++i) result.m[i][i] = 1;
  while (exponent > 0) {
    if (exponent % 2 == 1) result = mul(result, base);
    exponent = exponent >> 1;
    base = mul(base, base);
  }
  return result;
}
int main() {
  ios::sync_with_stdio(false);
  ;
  cin.tie(0);
  ;
  long long int c, w, h, i, j;
  cin >> c >> w >> h;
  for (i = 0; i < w; i++) mat.m[i][i + 1] = h;
  for (i = 0; i <= w; i++) mat.m[i][0] = 1;
  mat = pow(mat, c);
  long long int ans = 0;
  for (i = 0; i <= w; i++) {
    ans += mat.m[0][i];
    if (ans >= 1000003) ans -= 1000003;
  }
  cout << ans << "\n";
  return 0;
}
