#include <bits/stdc++.h>
using namespace std;
int a, b, k1, k2, n;
long long mod = 100000000;
int dp[105][105][3][105];
long long call(int indx, int zf, int of, int prev, int remOne, int remZero) {
  if (indx >= n) return 1;
  long long res = 0;
  bool flag;
  int lastLen = (zf | of);
  if (zf)
    flag = 0;
  else
    flag = 1;
  if (dp[remZero][remOne][flag][lastLen] != -1)
    return dp[remZero][remOne][flag][lastLen];
  if (prev == 0) {
    if (zf + 1 <= k1 && remZero > 0) {
      res += call(indx + 1, zf + 1, 0, 0, remOne, remZero - 1);
    }
    if (remOne > 0) {
      res += call(indx + 1, 0, 1, 1, remOne - 1, remZero);
    }
    res %= mod;
  }
  if (prev == 1) {
    if (of + 1 <= k2 && remOne > 0)
      res += call(indx + 1, 0, of + 1, 1, remOne - 1, remZero);
    if (remZero > 0) res += call(indx + 1, 1, 0, 0, remOne, remZero - 1);
    res %= mod;
  }
  return dp[remZero][remOne][flag][lastLen] = res % mod;
}
int main() {
  scanf("%d%d%d%d", &a, &b, &k1, &k2);
  n = a + b;
  memset(dp, -1, sizeof dp);
  long long res = call(1, 1, 0, 0, b, a - 1);
  res += call(1, 0, 1, 1, b - 1, a);
  res %= mod;
  cout << res << endl;
}
