用的不是递推,是直接数学方法
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int mod=1e5+3;
int a,b,c,d,k,f[2005][2005],jc[2005],inv[2005];
int read(){
int f=0,w=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-') w=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9'){
f=f*10+ch-'0';
ch=getchar();
}
return f*w;
}
int qpow(int x,int y){
int ans=1;
while(y){
if(y&1) ans=ans*x%mod;
x=x*x%mod;
y>>=1;
}
return ans;
}
void init(){
jc[0]=inv[0]=1;
for(int i=1;i<=2000;i++){
jc[i]=jc[i-1]*i%mod;
inv[i]=qpow(jc[i],mod-2);
}
f[0][0]=f[1][0]=f[1][1]=1;
for(int i=2;i<=2000;i++){
f[i][0]=1;
for(int j=1;j<=i;j++){
f[i][j]=(f[i-1][j-1]+f[i-1][j])%mod;
}
}
}
int mul(int x,int y){
if(x<y) return 1;
else return jc[x]*inv[y-1]%mod;
}
int solve(){
int ans=0;
init();
for(int i=0;i<=min(a,b);i++){
for(int j=0;j<=min(c,d);j++){
if(i+j>k) break;
ans=(ans+f[a][i]*mul(b,b-i+1)%mod*f[c][j]%mod*mul(d,d-j+1)%mod*f[a-i][k-i-j]%mod*mul(d-j,d-k+i+1)%mod)%mod;
}
}
return ans;
}
signed main(){
a=read(),b=read(),c=read(),d=read(),k=read();
printf("%lld\n",solve());
return 0;
}