#include <bits/stdc++.h>
using namespace std;
int n1, n2, k1, k2;
const int MOD = 1e8;
int dp[2][15][105][105];
int go(int type, int ammount, int left_foot, int left_horse) {
  if (!left_horse && !left_foot) {
    return 1;
  }
  int &ans = dp[type][ammount][left_foot][left_horse];
  if (ans != -1) return ans;
  ans = 0;
  if (type) {
    if (left_horse && ammount < k2)
      ans += go(1, ammount + 1, left_foot, left_horse - 1);
    if (left_foot) ans += go(0, 1, left_foot - 1, left_horse);
    ans %= MOD;
  } else {
    if (left_foot && ammount < k1)
      ans += go(0, ammount + 1, left_foot - 1, left_horse);
    if (left_horse) ans += go(1, 1, left_foot, left_horse - 1);
    ans %= MOD;
  }
  return ans;
}
int main() {
  memset(dp, -1, sizeof(dp));
  cin >> n1 >> n2 >> k1 >> k2;
  int ans = go(0, 0, n1, n2);
  cout << ans << endl;
  return 0;
}
