#include <bits/stdc++.h>
using namespace std;
int n;
const int modo = 1000003;
struct matrix {
  int a[105][105];
  friend matrix operator*(const matrix &a, const matrix &b) {
    matrix c;
    memset(c.a, 0, sizeof(c.a));
    int i, j;
    for (i = 0; i < n; i++) {
      for (j = 0; j < n; j++) {
        int k;
        for (k = 0; k < n; k++) {
          c.a[i][k] += (long long)a.a[i][j] * b.a[j][k] % modo;
        }
      }
    }
    for (i = 0; i < n; i++) {
      for (j = 0; j < n; j++) {
        c.a[i][j] %= modo;
      }
    }
    return c;
  }
  matrix(int x = 1) {
    memset(a, 0, sizeof(a));
    int i;
    for (i = 0; i < n; i++) {
      a[i][i] = x;
    }
  }
};
matrix ans;
void power(const matrix &x, int y) {
  if (y == 0) {
    ans = matrix();
    return;
  }
  power(x, y / 2);
  ans = ans * ans;
  if (y % 2 == 1) ans = ans * x;
}
int main() {
  int c, w, h;
  scanf("%d%d%d", &c, &w, &h);
  n = w + 1;
  int i;
  matrix x(0);
  for (i = 0; i <= w; i++) {
    x.a[i][0] = 1;
  }
  for (i = 1; i <= w; i++) {
    x.a[i - 1][i] = h;
  }
  power(x, c);
  int sum = 0;
  for (i = 0; i <= w; i++) {
    sum += ans.a[0][i];
  }
  printf("%d\n", sum % modo);
  return 0;
}
