func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 105;   int dr8[] = {0, 0, 1, -1, 1, 1, -1, -1};   int dc8[] = {1, -1, 0, 0, -1, 1, -1, 1};   int dr4[] = {0, 1, -1, 0};   int dc4[] = {1, 0, 0, -1};   int dp[N][N][15][15][2];   int n1, n2, n, k1, k2;   int calc(int f, int h, int tf, int th, int pr) {     if (f > k1 || h > k2 || tf > n1 || th > n2) return 0;     if (f <= k1 && h <= k2 && tf == n1 && th == n2) return 1;     if (dp[th][tf][f][h][pr] != -1) return dp[th][tf][f][h][pr];     int ans = 0;     if (pr == 0)       ans = (1LL * calc(f + 1, 0, tf + 1, th, 0) % 100000000 +              calc(0, 1, tf, th + 1, 1) % 100000000) %             100000000;     else       ans = (1LL * calc(0, h + 1, tf, th + 1, 1) % 100000000 +              calc(1, 0, tf + 1, th, 0) % 100000000) %             100000000;     return dp[th][tf][f][h][pr] = ans;   }   int main() {     ios_base::sync_with_stdio(false);     cin.tie(NULL);     cout.tie(NULL);     memset(dp, -1, sizeof dp);     cin >> n1 >> n2 >> k1 >> k2;     n = n1 + n2;     int ans = calc(1, 0, 1, 0, 0) % 100000000;     memset(dp, -1, sizeof dp);     ans = (1LL * ans + calc(0, 1, 0, 1, 1)) % 100000000;     cout << ans % 100000000;   }   