#include <bits/stdc++.h>
using namespace std;
int NoRestriction(int F, int H) {
  if (H + F == 0) return 1;
  int f = NoRestriction(F - 1, H);
  int h = NoRestriction(F, H - 1);
  return f + h;
}
int limit_1_FH(int F, int H) {
  if (F + H == 0) return 1;
  int f = 0;
  if (F > 0) f = limit_1_FH(F - 1, H);
  int h = 0;
  if (H > 0) h = limit_1_FH(F, H - 1);
  return f + h;
}
int limit_f, limit_h;
int limit_2_cons(int F, int H, int k1, int k2) {
  if (F + H == 0) return 1;
  int f = 0;
  if (F > 0 and k1 > 0) f = limit_2_cons(F - 1, H, k1 - 1, limit_h);
  int h = 0;
  if (H > 0 and k2 > 0) h = limit_2_cons(F, H - 1, limit_f, k2 - 1);
  return f + h;
}
int dp[101][101][11][11];
int dpsoln(int F, int H, int k1, int k2) {
  if (F + H == 0) return 1;
  if (dp[F][H][k1][k2] != -1) return dp[F][H][k1][k2];
  int f = 0;
  if (F > 0 and k1 > 0) f = dpsoln(F - 1, H, k1 - 1, limit_h);
  int h = 0;
  if (H > 0 and k2 > 0) h = dpsoln(F, H - 1, limit_f, k2 - 1);
  return dp[F][H][k1][k2] = (f + h) % 100000000;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  int n1, n2;
  cin >> n1 >> n2 >> limit_f >> limit_h;
  for (int i = 0; i <= n1; i++) {
    for (int j = 0; j <= n2; j++) {
      for (int k = 0; k <= limit_f; k++) {
        for (int l = 0; l <= limit_h; l++) dp[i][j][k][l] = -1;
      }
    }
  }
  cout << dpsoln(n1, n2, limit_f, limit_h);
  return 0;
}
