n,m,k=map(int,input().split())
#n*mからk個選ぶ
#x方向
mod=10**9+7
kaidan=[1]*(n*m+1)
gyaku=[1]*(n*m+1)
for i in range(1,n*m+1):
    kaidan[i]=i*kaidan[i-1]%mod
    gyaku[i]=pow(kaidan[i],mod-2,mod)
def comb(n,r):
    if n-r>0 and n>0 and r>0:
        return (kaidan[n]*gyaku[n-r]*gyaku[r])%mod
    elif n==0 or r==0 or n==r:
        return 1
    else:
        0
ans=0
for d in range(1,n):
    ans+=d*(n-d)*m*m*comb(n*m-2,k-2)
for d in range(1,m):
    ans+=d*(m-d)*n*n*comb(n*m-2,k-2)
print(ans%mod) n,m,k=map(int,input().split()) n map(int,input().split()) map int input().split() ().split () input split m k mod=10**9+7 mod 10**9+7 10**9 10 9 7 kaidan=[1]*(n*m+1) kaidan [1]*(n*m+1) [1] 1 n*m+1 n*m n m 1 gyaku=[1]*(n*m+1) gyaku [1]*(n*m+1) [1] 1 n*m+1 n*m n m 1 for i in range(1,n*m+1):
    kaidan[i]=i*kaidan[i-1]%mod
    gyaku[i]=pow(kaidan[i],mod-2,mod) i range(1,n*m+1) range 1 n*m+1 n*m n m 1 kaidan[i]=i*kaidan[i-1]%mod kaidan[i] kaidan i i*kaidan[i-1]%mod i*kaidan[i-1] i kaidan[i-1] kaidan i-1 i 1 mod gyaku[i]=pow(kaidan[i],mod-2,mod) gyaku[i] gyaku i pow(kaidan[i],mod-2,mod) pow kaidan[i] kaidan i mod-2 mod 2 mod def comb(n,r):
    if n-r>0 and n>0 and r>0:
        return (kaidan[n]*gyaku[n-r]*gyaku[r])%mod
    elif n==0 or r==0 or n==r:
        return 1
    else:
        0 comb if n-r>0 and n>0 and r>0:
        return (kaidan[n]*gyaku[n-r]*gyaku[r])%mod
    elif n==0 or r==0 or n==r:
        return 1
    else:
        0 n-r>0 and n>0 and r>0 n-r>0 and n>0 n-r>0 n-r n r 0 n>0 n 0 r>0 r 0 return (kaidan[n]*gyaku[n-r]*gyaku[r])%mod (kaidan[n]*gyaku[n-r]*gyaku[r])%mod kaidan[n]*gyaku[n-r]*gyaku[r] kaidan[n]*gyaku[n-r] kaidan[n] kaidan n gyaku[n-r] gyaku n-r n r gyaku[r] gyaku r mod elif n==0 or r==0 or n==r:
        return 1
     n==0 or r==0 or n==r n==0 or r==0 n==0 n 0 r==0 r 0 n==r n r return 1 1 0 n n r r ans=0 ans 0 for d in range(1,n):
    ans+=d*(n-d)*m*m*comb(n*m-2,k-2) d range(1,n) range 1 n ans+=d*(n-d)*m*m*comb(n*m-2,k-2) ans d*(n-d)*m*m*comb(n*m-2,k-2) d*(n-d)*m*m d*(n-d)*m d*(n-d) d n-d n d m m comb(n*m-2,k-2) comb n*m-2 n*m n m 2 k-2 k 2 for d in range(1,m):
    ans+=d*(m-d)*n*n*comb(n*m-2,k-2) d range(1,m) range 1 m ans+=d*(m-d)*n*n*comb(n*m-2,k-2) ans d*(m-d)*n*n*comb(n*m-2,k-2) d*(m-d)*n*n d*(m-d)*n d*(m-d) d m-d m d n n comb(n*m-2,k-2) comb n*m-2 n*m n m 2 k-2 k 2 print(ans%mod) print ans%mod ans mod mod=10**9+7 10**9+7 mod ans=0 0 ans ans+=d*(n-d)*m*m*comb(n*m-2,k-2) d*(n-d)*m*m*comb(n*m-2,k-2) ans ans+=d*(m-d)*n*n*comb(n*m-2,k-2) d*(m-d)*n*n*comb(n*m-2,k-2) ans kaidan=[1]*(n*m+1) [1]*(n*m+1) kaidan def comb(n,r):
    if n-r>0 and n>0 and r>0:
        return (kaidan[n]*gyaku[n-r]*gyaku[r])%mod
    elif n==0 or r==0 or n==r:
        return 1
    else:
        0 def comb(n,r):
    if n-r>0 and n>0 and r>0:
        return (kaidan[n]*gyaku[n-r]*gyaku[r])%mod
    elif n==0 or r==0 or n==r:
        return 1
    else:
        0 comb gyaku=[1]*(n*m+1) [1]*(n*m+1) gyaku m,k=map(int,input().split()) map(int,input().split()) m k=map(int,input().split()) map(int,input().split()) k n,m,k=map(int,input().split()) map(int,input().split()) n
n,m,k=map(int,input().split())
#n*mからk個選ぶ
#x方向
mod=10**9+7
kaidan=[1]*(n*m+1)
gyaku=[1]*(n*m+1)
for i in range(1,n*m+1):
    kaidan[i]=i*kaidan[i-1]%mod
    gyaku[i]=pow(kaidan[i],mod-2,mod)
def comb(n,r):
    if n-r>0 and n>0 and r>0:
        return (kaidan[n]*gyaku[n-r]*gyaku[r])%mod
    elif n==0 or r==0 or n==r:
        return 1
    else:
        0
ans=0
for d in range(1,n):
    ans+=d*(n-d)*m*m*comb(n*m-2,k-2)
for d in range(1,m):
    ans+=d*(m-d)*n*n*comb(n*m-2,k-2)
print(ans%mod)