/// Author : Nguyễn Thái Sơn - K18 - KHMT - UIT
/// Training ICPC 2024
#include<bits/stdc++.h>
/// #pragma GCC optimize("O3,unroll-loops")
/// #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
#define fi first
#define se second
#define TASK "paint"
#define pb push_back
#define EL cout << endl
#define Ti20_ntson int main()
#define in(x) cout << x << endl
#define all(x) (x).begin(),(x).end()
#define getbit(x, i) (((x) >> (i)) & 1)
#define cntbit(x) __builtin_popcount(x)
#define FOR(i,l,r) for (int i = l; i <= r; i++)
#define FORD(i,l,r) for (int i = l; i >= r; i--)
#define Debug(a,n) for (int i = 1; i <= n; i++) cout << a[i] << " "; cout << endl
using namespace std;
typedef long long ll;
typedef vector<int> vi;
typedef pair<int,int> vii;
typedef unsigned long long ull;
typedef vector<vector<int>> vvi;
int fastMax(int x, int y) { return (((y-x)>>(32-1))&(x^y))^y; }
const int N = 101;
const int oo = INT_MAX;
const int mod = 1e9 + 7;
const int d4x[4] = {-1, 0, 1, 0} , d4y[4] = {0, 1, 0, -1};
const int d8x[8] = {-1, -1, 0, 1, 1, 1, 0, -1}, d8y[8] = {0, 1, 1, 1, 0, -1, -1, -1};
int dp[N][N][N][N][3], W, B, R, k, m, n;
inline void Add(int &u, int v) {
u += v;
if (u >= mod) u -= mod;
}
inline void Read_Input() {
cin >> W >> B >> R >> k >> m;
n = W + B + R;
}
inline void Solve() {
dp[0][0][0][0][0] = 1;
FOR(w, 0, W)
FOR(b, 0, B)
FOR(r, 0, R) {
FOR(num, 0, m)
FOR(lst, 0, 2)
if (dp[w][b][r][num][lst]) {
int val = dp[w][b][r][num][lst];
// cout << w << " " << b << " " << r << " " << num << " " << lst << " " << val << endl;
/// 0 dat trang
if (lst != 0 || w == 0)
for (int numW = 1; numW + w <= W && numW < k; numW++)
Add(dp[w + numW][b][r][num][0], val);
/// 1 dat Xanh
if (lst != 1) {
for (int numB = 1; numB + b <= B; numB++)
if (lst == 2)
Add(dp[w][b + numB][r][num + 1][1], val);
else if (lst == 0)
Add(dp[w][b + numB][r][num][1], val);
}
/// 1 dat Do
if (lst != 2) {
for (int numR = 1; numR + r <= R; numR++)
if (lst == 1)
Add(dp[w][b][r + numR][num + 1][2], val);
else if (lst == 0)
Add(dp[w][b][r + numR][num][2], val);
}
}
}
int Ans = 0;
FOR(i, 0, 2)
Add(Ans, dp[W][B][R][m][i]);
cout << Ans;
}
Ti20_ntson {
freopen(TASK".INP","r",stdin);
freopen(TASK".OUT","w",stdout);
ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
int T = 1;
// cin >> T;
while (T -- ) {
Read_Input();
Solve();
}
}
Ly8vIEF1dGhvciA6IE5ndXnhu4VuIFRow6FpIFPGoW4gLSBLMTggLSBLSE1UIC0gVUlUCi8vLyBUcmFpbmluZyBJQ1BDIDIwMjQKCiNpbmNsdWRlPGJpdHMvc3RkYysrLmg+CgovLy8gI3ByYWdtYSBHQ0Mgb3B0aW1pemUoIk8zLHVucm9sbC1sb29wcyIpCi8vLyAjcHJhZ21hIEdDQyB0YXJnZXQoImF2eDIsYm1pLGJtaTIsbHpjbnQscG9wY250IikKCiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBUQVNLICJwYWludCIKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBFTCBjb3V0IDw8IGVuZGwKI2RlZmluZSBUaTIwX250c29uIGludCBtYWluKCkKI2RlZmluZSBpbih4KSBjb3V0IDw8IHggPDwgZW5kbAojZGVmaW5lIGFsbCh4KSAoeCkuYmVnaW4oKSwoeCkuZW5kKCkKI2RlZmluZSBnZXRiaXQoeCwgaSkgKCgoeCkgPj4gKGkpKSAmIDEpCiNkZWZpbmUgY250Yml0KHgpIF9fYnVpbHRpbl9wb3Bjb3VudCh4KQojZGVmaW5lIEZPUihpLGwscikgZm9yIChpbnQgaSA9IGw7IGkgPD0gcjsgaSsrKQojZGVmaW5lIEZPUkQoaSxsLHIpIGZvciAoaW50IGkgPSBsOyBpID49IHI7IGktLSkKI2RlZmluZSBEZWJ1ZyhhLG4pIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgY291dCA8PCBhW2ldIDw8ICIgIjsgY291dCA8PCBlbmRsCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdHlwZWRlZiBsb25nIGxvbmcgbGw7CnR5cGVkZWYgdmVjdG9yPGludD4gdmk7CnR5cGVkZWYgcGFpcjxpbnQsaW50PiB2aWk7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHVsbDsKdHlwZWRlZiB2ZWN0b3I8dmVjdG9yPGludD4+IHZ2aTsKaW50IGZhc3RNYXgoaW50IHgsIGludCB5KSB7IHJldHVybiAoKCh5LXgpPj4oMzItMSkpJih4XnkpKV55OyB9Cgpjb25zdCBpbnQgTiA9IDEwMTsKY29uc3QgaW50IG9vID0gSU5UX01BWDsKY29uc3QgaW50IG1vZCA9IDFlOSArIDc7CmNvbnN0IGludCBkNHhbNF0gPSB7LTEsIDAsIDEsIDB9ICwgZDR5WzRdID0gezAsIDEsIDAsIC0xfTsKY29uc3QgaW50IGQ4eFs4XSA9IHstMSwgLTEsIDAsIDEsIDEsIDEsIDAsIC0xfSwgZDh5WzhdID0gezAsIDEsIDEsIDEsIDAsIC0xLCAtMSwgLTF9OwoKaW50IGRwW05dW05dW05dW05dWzNdLCBXLCBCLCBSLCBrLCBtLCBuOwoKaW5saW5lIHZvaWQgQWRkKGludCAmdSwgaW50IHYpIHsKICAgIHUgKz0gdjsKICAgIGlmICh1ID49IG1vZCkgdSAtPSBtb2Q7Cn0KCmlubGluZSB2b2lkIFJlYWRfSW5wdXQoKSB7CiAgICBjaW4gPj4gVyA+PiBCID4+IFIgPj4gayA+PiBtOwogICAgbiA9IFcgKyBCICsgUjsKfQoKaW5saW5lIHZvaWQgU29sdmUoKSB7CiAgICBkcFswXVswXVswXVswXVswXSA9IDE7CiAgICBGT1IodywgMCwgVykKICAgICAgICBGT1IoYiwgMCwgQikKICAgICAgICAgICAgRk9SKHIsIDAsIFIpIHsKICAgICAgICAgICAgICAgIEZPUihudW0sIDAsIG0pCiAgICAgICAgICAgICAgICAgICAgRk9SKGxzdCwgMCwgMikKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRwW3ddW2JdW3JdW251bV1bbHN0XSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZhbCA9IGRwW3ddW2JdW3JdW251bV1bbHN0XTsKCi8vICAgICAgICAgICAgICAgICAgICAgICAgY291dCA8PCB3IDw8ICIgIiA8PCBiIDw8ICIgIiA8PCByIDw8ICIgIiA8PCBudW0gPDwgIiAiIDw8IGxzdCA8PCAiICIgPDwgdmFsIDw8IGVuZGw7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vLyAwIGRhdCB0cmFuZwogICAgICAgICAgICAgICAgICAgICAgICBpZiAobHN0ICE9IDAgfHwgdyA9PSAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgbnVtVyA9IDE7IG51bVcgKyB3IDw9IFcgJiYgbnVtVyA8IGs7IG51bVcrKykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGQoZHBbdyArIG51bVddW2JdW3JdW251bV1bMF0sIHZhbCk7CgogICAgICAgICAgICAgICAgICAgICAgICAvLy8gMSBkYXQgWGFuaAogICAgICAgICAgICAgICAgICAgICAgICBpZiAobHN0ICE9IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IG51bUIgPSAxOyBudW1CICsgYiA8PSBCOyBudW1CKyspCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxzdCA9PSAyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGQoZHBbd11bYiArIG51bUJdW3JdW251bSArIDFdWzFdLCB2YWwpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGxzdCA9PSAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGQoZHBbd11bYiArIG51bUJdW3JdW251bV1bMV0sIHZhbCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIC8vLyAxIGRhdCBEbwogICAgICAgICAgICAgICAgICAgICAgICBpZiAobHN0ICE9IDIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IG51bVIgPSAxOyBudW1SICsgciA8PSBSOyBudW1SKyspCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxzdCA9PSAxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGQoZHBbd11bYl1bciArIG51bVJdW251bSArIDFdWzJdLCB2YWwpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGxzdCA9PSAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGQoZHBbd11bYl1bciArIG51bVJdW251bV1bMl0sIHZhbCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgIGludCBBbnMgPSAwOwoKICAgIEZPUihpLCAwLCAyKQogICAgICAgIEFkZChBbnMsIGRwW1ddW0JdW1JdW21dW2ldKTsKCiAgICBjb3V0IDw8IEFuczsKfQoKVGkyMF9udHNvbiB7CiAgICBmcmVvcGVuKFRBU0siLklOUCIsInIiLHN0ZGluKTsKICAgIGZyZW9wZW4oVEFTSyIuT1VUIiwidyIsc3Rkb3V0KTsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKICAgIGludCBUID0gMTsKLy8gICAgY2luID4+IFQ7CiAgICB3aGlsZSAoVCAtLSApIHsKICAgICAgICBSZWFkX0lucHV0KCk7CiAgICAgICAgU29sdmUoKTsKICAgIH0KfQoKCg==