#include <bits/stdc++.h>
using namespace std;
const long modulo = 100000000;
const int maxn = 101;
long f[2 * maxn][maxn][2];
int n1, n2, k1, k2, n;
void readData() { scanf("%d %d %d %d", &n1, &n2, &k1, &k2); }
void dynamicProgramming() {
  n = n1 + n2;
  f[0][0][0] = 1;
  f[0][0][1] = 1;
  for (int i = 1; i <= k2; i++) {
    f[i][0][1] = 1;
    f[i][0][0] = 0;
  }
  for (int i = k2 + 1; i <= n; i++) {
    f[i][0][1] = f[i][0][0] = 0;
  }
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= n1; j++)
      if (i >= j) {
        f[i][j][0] = f[i][j][1] = 0;
        for (int k = 1; k <= k1; k++)
          if (k <= j) f[i][j][0] = (f[i][j][0] + f[i - k][j - k][1]) % modulo;
        for (int k = 1; k <= k2; k++)
          if (k <= i) f[i][j][1] = (f[i][j][1] + f[i - k][j][0]) % modulo;
      }
}
void writeData() { printf("%d", (f[n][n1][0] + f[n][n1][1]) % modulo); }
int main() {
  readData();
  dynamicProgramming();
  writeData();
  return 0;
}
