#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-9;
int dp[110][110][15][15];
int n1, n2, k1, k2;
int call(int n1, int n2, int a, int b) {
  if (n1 == 0 && n2 == 0) return dp[n1][n2][a][b] = 1;
  if (dp[n1][n2][a][b] != -1) {
    return dp[n1][n2][a][b];
  } else {
    dp[n1][n2][a][b] = 0;
    if (a - 1 >= 0 && n1 - 1 >= 0) {
      dp[n1][n2][a][b] = (dp[n1][n2][a][b] % 100000000 +
                          call(n1 - 1, n2, a - 1, k2) % 100000000) %
                         100000000;
    }
    if (b - 1 >= 0 && n2 - 1 >= 0) {
      dp[n1][n2][a][b] = (dp[n1][n2][a][b] % 100000000 +
                          call(n1, n2 - 1, k1, b - 1) % 100000000) %
                         100000000;
    }
    return dp[n1][n2][a][b];
  }
}
int main() {
  cin >> n1 >> n2 >> k1 >> k2;
  memset((dp), -1, sizeof(dp));
  cout << call(n1, n2, k1, k2);
}
