#include <bits/stdc++.h>
#define rep(i, a, b) for(int i = (a); i <= (b); i++)
#define pre(i, a, b) for(int i = (a); i >= (b); i--)
#define Ede(i, u) for(int i = h[u]; i; i = ne[i])
#define go(i, a) for(auto i : a)
#define uint unsigned int
#define LL long long
#define ULL unsigned long long
#define PII pair<int, int>
#define PIL pair<int, long long>
#define PLI pair<long long, int>
#define PLL pair<long long, long long>
#define mp make_pair
#define eb emplace_back
#define opb pop_back
#define pb push_back
#define pf push_front
#define fi first
#define se second
#define sf scanf
#define prf printf
#define el putchar('\n')
#define mms(arr, n) memset(arr, n, sizeof(arr))
#define mmc(arr1, arr2) memcpy(arr1, arr2, sizeof(arr2))
#define Db(x) prf("test(%s): ", x)
const int inf = 0x3f3f3f3f;
template <typename T> inline void rd(T &x){
x = 0; bool f = true; char ch = getchar();
while(ch < '0' || ch > '9'){ if(ch == '-') f = false; ch = getchar();}
while(ch >= '0' && ch <= '9'){ x = (x << 1) + (x << 3) + (ch ^ '0'); ch = getchar();}
if(!f) x = -x;
}
template <typename T, typename ...Args> inline void rd(T &x, Args &...args){ rd(x); rd(args...);}
using namespace std;
const int N = 1010, M = N << 1, mod = 1e5 + 3;
int a, b, c, d, k;
int fac[M], inv[M];
int qmi(LL a, int k, int p){
int res = 1;
for(; k; k >>= 1, a = a * a % p) if(k & 1) res = res * a % p;
return res;
}
void init(){
fac[0] = inv[0] = 1;
rep(i, 1, M-1) fac[i] = (LL)fac[i - 1] * i % mod;
inv[M-1] = qmi(fac[M-1], mod - 2, mod);
pre(i, M-2, 1) inv[i] = (LL)inv[i + 1] * (i + 1) % mod;
}
int C(int a, int b){
return (LL)fac[a] * inv[b] * inv[a - b] % mod;
}
int main(){
rd(a, b, c, d, k);
init();
LL ans = 0;
rep(i, 0, min(c, d)){
ans = ans + C(c, i) * C(d, i) * fac[i] % mod * C(a, k - i) * C(b + d - i, k - i) * fac[k - i] % mod;
}
prf("%d\n", ans);
return 0;
}