#include <bits/stdc++.h>
using namespace std;
long long int dp[101][101][11][11];
long long int go(long long int n1, long long int n2, long long int k1,
                 long long int k2, long long int kup, long long int k2up) {
  if (n1 + n2 == 0) return 1;
  long long int& ans = dp[n1][n2][k1][k2];
  if (ans != -1) return ans;
  long long int x = 0;
  if (n1 > 0 && k1 > 0)
    x = go(n1 - 1, n2, k1 - 1, k2up, kup, k2up) % ((long long int)1e8);
  long long int y = 0;
  if (n2 > 0 && k2 > 0)
    y = go(n1, n2 - 1, kup, k2 - 1, kup, k2up) % ((long long int)1e8);
  ans = (x + y) % ((long long int)1e8);
  return ans;
}
void solve() {
  long long int n1, n2, k1, k2;
  cin >> n1 >> n2 >> k1 >> k2;
  memset(dp, -1, sizeof(dp));
  cout << go(n1, n2, k1, k2, k1, k2);
}
signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  ;
  long long int T = 1;
  while (T--) {
    solve();
    cout << endl;
  }
  return 0;
}
