#include<bits/stdc++.h>
#define int long long
using namespace std;
const int MAXN = 410;
const int MOD = 1e9+7;
int n,m,c,ans;
int qpow(int a,int b){
if(b==0) return 1;
if(b==1) return a;
int k = qpow(a,b>>1);
k*=k;k%=MOD;
if(b&1) k*=a;k%=MOD;
return k;
}
int C[MAXN][MAXN];
long long mm, p;
void init(int pp) { mm = ((__int128)1 << 64) / pp; p = pp; }
long long o(const long long x)
{
return x - ((__int128(x) * mm) >> 64) * p;
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin >> n >> m >> c;init(MOD);
for(register int i=0;i<=400;i++){
C[i][0]=1;
for(register int j=1;j<=i;j++){
C[i][j]=o(C[i-1][j-1]+C[i-1][j]);
}
}
for(int i = 0;i<=n;i++){
for(int j = 0;j<=m;j++){
for(int k = 0;k<=c;k++){
ans += o(o(o(o(o((i+j+k)&1?-1:1)*C[n][i])*C[m][j])*C[c][k])*qpow(c-k+1,n*m-i*m-j*n+i*j));
ans = o(ans);
}
}
}
cout << o(o(ans)+MOD);
return 0;
}
here