#include <bits/stdc++.h>
using namespace std;
using vint = vector<int>;
using pii = pair<int, int>;
using pdd = pair<long double, long double>;
using vpii = vector<pii>;
const int N = 2e5 + 5;
const int Inf = 1e9 + 7;
const int Mod = 1e9 + 7;
const long double eps = 1e-9;
void io() {
  ios_base::sync_with_stdio(0);
  cin.tie(NULL);
  cout.tie(NULL);
  cerr.tie(NULL);
}
int n1, n2, k1, k2, dp[201][2][11][101];
signed main() {
  io();
  cin >> n1 >> n2 >> k1 >> k2;
  k1 = min(n1, k1);
  k2 = min(n2, k2);
  dp[1][0][1][1] = 1;
  dp[1][1][1][0] = 1;
  for (int i = 2; i <= n1 + n2; ++i) {
    for (int used = 1; used <= min(i - 1, n1); ++used)
      for (int pc = 1; pc <= min(i - 1, min(k2, i - used)); ++pc) {
        (dp[i][0][1][used] += dp[i - 1][1][pc][used - 1]) %= 100000000;
      }
    for (int used = 1; used <= min(i, n1); ++used) {
      for (int cnt = 2; cnt <= min(i, min(k1, used)); ++cnt)
        dp[i][0][cnt][used] = dp[i - 1][0][cnt - 1][used - 1];
    }
    for (int used = 1; used <= min(i - 1, n1); ++used) {
      for (int pc = 1; pc <= min(i - 1, min(used, k1)); ++pc) {
        (dp[i][1][1][used] += dp[i - 1][0][pc][used]) %= 100000000;
      }
    }
    for (int used = 0; used <= min(i, n1); ++used)
      for (int cnt = 2; cnt <= min(i, min(k2, i - used)); ++cnt) {
        dp[i][1][cnt][used] = dp[i - 1][1][cnt - 1][used];
      }
  }
  int ans = 0;
  for (int cnt = 1; cnt <= 10; ++cnt) {
    (ans += dp[n1 + n2][0][cnt][n1]) %= 100000000;
    (ans += dp[n1 + n2][1][cnt][n1]) %= 100000000;
  }
  cout << ans;
}
