N=10**6
p=10**9+7
f,finv,inv=[0]*(N*5),[0]*(N*5),[0]*(N*5)

def nCr_init(L,p):
    for i in range(L+1):
        if i<=1:
            f[i],finv[i],inv[i]=1,1,1
        else:
            f[i]=(f[i-1]*i)%p
            inv[i]=(p-inv[p%i]*(p//i))%p
            finv[i]=(finv[i-1]*inv[i])%p

def nPr(n,r,p):
    if 0<=r<=n and 0<=n:
        return (f[n]*finv[n-r])%p
    else:
        return 0
    
nCr_init(N,p)

N,M,K=map(int,input().split())

print((nPr(N*M,K,p)*((M+N)*inv[6]*finv[K-2])%p)%p) N=10**6 N 10**6 10 6 p=10**9+7 p 10**9+7 10**9 10 9 7 f,finv,inv=[0]*(N*5),[0]*(N*5),[0]*(N*5) f [0]*(N*5) [0] 0 N*5 N 5 finv [0]*(N*5) [0] 0 N*5 N 5 inv [0]*(N*5) [0] 0 N*5 N 5 def nCr_init(L,p):
    for i in range(L+1):
        if i<=1:
            f[i],finv[i],inv[i]=1,1,1
        else:
            f[i]=(f[i-1]*i)%p
            inv[i]=(p-inv[p%i]*(p//i))%p
            finv[i]=(finv[i-1]*inv[i])%p nCr_init for i in range(L+1):
        if i<=1:
            f[i],finv[i],inv[i]=1,1,1
        else:
            f[i]=(f[i-1]*i)%p
            inv[i]=(p-inv[p%i]*(p//i))%p
            finv[i]=(finv[i-1]*inv[i])%p i range(L+1) range L+1 L 1 if i<=1:
            f[i],finv[i],inv[i]=1,1,1
        else:
            f[i]=(f[i-1]*i)%p
            inv[i]=(p-inv[p%i]*(p//i))%p
            finv[i]=(finv[i-1]*inv[i])%p i<=1 i 1 f[i],finv[i],inv[i]=1,1,1 f[i] f i 1 finv[i] finv i 1 inv[i] inv i 1 f[i]=(f[i-1]*i)%p f[i] f i (f[i-1]*i)%p f[i-1]*i f[i-1] f i-1 i 1 i p inv[i]=(p-inv[p%i]*(p//i))%p inv[i] inv i (p-inv[p%i]*(p//i))%p p-inv[p%i]*(p//i) p inv[p%i]*(p//i) inv[p%i] inv p%i p i p//i p i p finv[i]=(finv[i-1]*inv[i])%p finv[i] finv i (finv[i-1]*inv[i])%p finv[i-1]*inv[i] finv[i-1] finv i-1 i 1 inv[i] inv i p L L p p def nPr(n,r,p):
    if 0<=r<=n and 0<=n:
        return (f[n]*finv[n-r])%p
    else:
        return 0
     nPr if 0<=r<=n and 0<=n:
        return (f[n]*finv[n-r])%p
    else:
        return 0
     0<=r<=n and 0<=n 0<=r<=n 0<=r 0 r n 0<=n 0 n return (f[n]*finv[n-r])%p (f[n]*finv[n-r])%p f[n]*finv[n-r] f[n] f n finv[n-r] finv n-r n r p return 0 0 n n r r p p nCr_init(N,p) nCr_init N p N,M,K=map(int,input().split()) N map(int,input().split()) map int input().split() ().split () input split M K print((nPr(N*M,K,p)*((M+N)*inv[6]*finv[K-2])%p)%p) print (nPr(N*M,K,p)*((M+N)*inv[6]*finv[K-2])%p)%p nPr(N*M,K,p)*((M+N)*inv[6]*finv[K-2])%p nPr(N*M,K,p)*((M+N)*inv[6]*finv[K-2]) nPr(N*M,K,p) nPr N*M N M K p (M+N)*inv[6]*finv[K-2] (M+N)*inv[6] M+N M N inv[6] inv 6 finv[K-2] finv K-2 K 2 p p def nCr_init(L,p):
    for i in range(L+1):
        if i<=1:
            f[i],finv[i],inv[i]=1,1,1
        else:
            f[i]=(f[i-1]*i)%p
            inv[i]=(p-inv[p%i]*(p//i))%p
            finv[i]=(finv[i-1]*inv[i])%p def nCr_init(L,p):
    for i in range(L+1):
        if i<=1:
            f[i],finv[i],inv[i]=1,1,1
        else:
            f[i]=(f[i-1]*i)%p
            inv[i]=(p-inv[p%i]*(p//i))%p
            finv[i]=(finv[i-1]*inv[i])%p nCr_init p=10**9+7 10**9+7 p finv,inv=[0]*(N*5),[0]*(N*5),[0]*(N*5) [0]*(N*5) finv K=map(int,input().split()) map(int,input().split()) K inv=[0]*(N*5),[0]*(N*5),[0]*(N*5) [0]*(N*5) inv N=10**6 10**6 N f,finv,inv=[0]*(N*5),[0]*(N*5),[0]*(N*5) [0]*(N*5) f def nPr(n,r,p):
    if 0<=r<=n and 0<=n:
        return (f[n]*finv[n-r])%p
    else:
        return 0
     def nPr(n,r,p):
    if 0<=r<=n and 0<=n:
        return (f[n]*finv[n-r])%p
    else:
        return 0
     nPr N,M,K=map(int,input().split()) map(int,input().split()) N M,K=map(int,input().split()) map(int,input().split()) M
N=10**6
p=10**9+7
f,finv,inv=[0]*(N*5),[0]*(N*5),[0]*(N*5)

def nCr_init(L,p):
    for i in range(L+1):
        if i<=1:
            f[i],finv[i],inv[i]=1,1,1
        else:
            f[i]=(f[i-1]*i)%p
            inv[i]=(p-inv[p%i]*(p//i))%p
            finv[i]=(finv[i-1]*inv[i])%p

def nPr(n,r,p):
    if 0<=r<=n and 0<=n:
        return (f[n]*finv[n-r])%p
    else:
        return 0
    
nCr_init(N,p)

N,M,K=map(int,input().split())

print((nPr(N*M,K,p)*((M+N)*inv[6]*finv[K-2])%p)%p)