#include <bits/stdc++.h>
using namespace std;
const int N = 110;
const int md = 1000003;
long long a[N][N], b[N][N], d[N][N];
int c, w, h;
long long ans;
void mul1() {
  memset(d, 0, sizeof(d));
  for (int i = 0; i <= w; i++)
    for (int j = 0; j <= w; j++)
      for (int k = 0; k <= w; k++) {
        d[i][j] = (d[i][j] + a[i][k] * b[k][j] % md) % md;
      }
  memcpy(a, d, sizeof(a));
}
void mul2() {
  memset(d, 0, sizeof(d));
  for (int i = 0; i <= w; i++)
    for (int j = 0; j <= w; j++)
      for (int k = 0; k <= w; k++) {
        d[i][j] = (d[i][j] + b[i][k] * b[k][j] % md) % md;
      }
  memcpy(b, d, sizeof(b));
}
int main() {
  scanf("%d%d%d", &c, &w, &h);
  a[0][0] = 1;
  for (int i = 0; i <= w; i++) b[i][0] = 1;
  for (int i = 1; i <= w; i++) b[i - 1][i] = h;
  while (c) {
    if (c & 1) mul1();
    mul2();
    c >>= 1;
  }
  ans = 0;
  for (int i = 0; i <= w; i++) ans = (ans + a[0][i]) % md;
  cout << ans << endl;
  return 0;
}
