/*
将这个L形网格分成两个矩形,
一个长为 a 宽为 b+d ,
另一个长为 c 宽为 d .
分别计算将 k 个车将 i 个车放置在左边的矩形里,将 k−i 个车放在右边的矩形里,
问题就转化为了求在矩形中能放置几个车使其互不攻击
在一个 n×m 的矩形中使得 i 个车互不攻击,
可以从 n 行中任选 i 行,从 m 列中任选 i 列使其被限制在这个“正方形”中,
又因为在这个 i×i 大小的正方形中进行排列组合时,
第一行有 i 种选择方法,第二行有 i−1 种选择方法 …… 第 i 行只有 1 种选择方法。
则在 n×m 的矩形中使得 i 个车互不攻击的方案数为 C(n,i)×C(m,i)×i!
但是题目中还需要考虑两个矩形之间的互相冲突情况:
因为在 c×d 的矩形中有 k−i 个车,
那么就已经占据了 k−i 行,
故在 a×(b+d) 的矩形中只有 b+d−(k−i) 行能被使用。
所以最终答案为C(a,i)*C(b+d-k+i,i)*i!*C(c,k-i)*C(d,k-i)*(k-i)!
*/
#include<iostream>
using namespace std;
const int N=2e3,mod=100003;
using ll=long long;
int a,b,c,d,k;
ll dp[N+1][N+1];
ll C[N+1][N+1],fac[N+1];
int main(){
cin.tie(nullptr)->sync_with_stdio(false);
cin>>a>>b>>c>>d>>k;
for(int i=0;i<=N;i++){
C[i][0]=C[i][i]=1;
for(int j=1;j<=N;j++) C[i][j]=(C[i-1][j-1]+C[i-1][j])%mod;
}
fac[0]=1;
for(int i=1;i<=N;i++) fac[i]=fac[i-1]*i%mod;
ll ans=0;
for(int i=0;i<=k;i++)
ans=(ans+C[a][i]*C[b+d-k+i][i]%mod*fac[i]%mod*C[c][k-i]%mod*C[d][k-i]%mod*fac[k-i]%mod)%mod;
cout<<ans<<'\n';
return 0;
}