#include <bits/stdc++.h>
using namespace std;
const int MAX = 200;
int dp[MAX], tmp[MAX], dir[MAX], n, w, h, i, MOD = 1e6 + 3;
long long sum = 1, x;
queue<long long> q;
int main() {
  dir[0] = 1;
  cin >> n >> w >> h;
  for (int i = 1; i < MAX; i++) dir[i] = dir[i - 1] * h % MOD;
  for (int i = 0; i < w; i++) q.push(0);
  q.push(1);
  for (int i = 0; i < n; i++) {
    q.push(sum);
    x = q.front() * dir[min(i, w)] % MOD;
    sum = (sum - x) * h + sum;
    sum = (sum % MOD + MOD) % MOD;
    q.pop();
  }
  cout << sum;
  return 0;
}
