#include <bits/stdc++.h>
using namespace std;
const int maxn = ((int)5e5) + 5;
long long int dp[201][101][11][2];
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  int n1, n2, k[2];
  cin >> n1 >> n2 >> k[0] >> k[1];
  for (int i = 0; i < k[0] + 1; i++) dp[n1 + n2][n1][i][0] = 1;
  for (int i = 0; i < k[1] + 1; i++) dp[n1 + n2][n1][i][1] = 1;
  for (int pos = n1 + n2 - 1; pos >= 0; pos--) {
    for (int n1Used = 0; n1Used <= n1; n1Used++) {
      for (int streak = 0; streak <= 1; streak++) {
        for (int cnt = 0; cnt <= k[streak]; cnt++) {
          int n2Used = pos - n1Used;
          if (n2Used >= 0 && n2Used <= n2) {
            long long int& res = dp[pos][n1Used][cnt][streak];
            if (streak == 0) {
              if (n1Used < n1 && cnt + 1 <= k[0])
                res = (res + dp[pos + 1][n1Used + 1][cnt + 1][0]) %
                      ((long long int)1e8 + 0);
              if (n2Used < n2)
                res = (res + dp[pos + 1][n1Used][1][1]) %
                      ((long long int)1e8 + 0);
            }
            if (streak == 1) {
              if (n1Used < n1)
                res = (res + dp[pos + 1][n1Used + 1][1][0]) %
                      ((long long int)1e8 + 0);
              if (n2Used < n2 && cnt + 1 <= k[1])
                res = (res + dp[pos + 1][n1Used][cnt + 1][1]) %
                      ((long long int)1e8 + 0);
            }
          }
        }
      }
    }
  }
  cout << dp[0][0][0][0];
  return 0;
}
