#include <bits/stdc++.h>
using namespace std;
const int maxn = (1e2) + 10;
const int mod = (1e8);
const int inf = (1e9) + 10;
int n1, n2;
int k1, k2;
long long int dp[2 * maxn][maxn][maxn][2];
long long int ans(int i, int a1, int a2, bool b) {
  if (dp[i][a1][a2][b] >= 0) return dp[i][a1][a2][b];
  if (i == n1 + n2 + 1 && a1 == 0 && a2 == 0) return 1;
  long long int res = 0;
  if (b == 0) {
    for (int k = 1; k <= k1; k++) {
      if (i + k <= n1 + n2 + 1 && a1 >= k) {
        res += ans(i + k, a1 - k, a2, 1);
        res = res % mod;
        if (res < 0) res += mod;
      }
    }
  } else {
    for (int k = 1; k <= k2; k++) {
      if (i + k <= n1 + n2 + 1 && a2 >= k) {
        res += ans(i + k, a1, a2 - k, 0);
        res = res % mod;
        if (res < 0) res += mod;
      }
    }
  }
  res = res % mod;
  if (res < 0) res += mod;
  dp[i][a1][a2][b] = res;
  return res;
}
int main() {
  cin >> n1 >> n2 >> k1 >> k2;
  memset(dp, -1, sizeof dp);
  long long int anss = (ans(1, n1, n2, 0) + ans(1, n1, n2, 1)) % mod;
  if (anss < 0) anss += mod;
  cout << anss;
  return 0;
}
