N, M, K = list(map(int, input().split()))
mod = 10**9 + 7

tn = 0
tm = 0

for n in range(N):
    tn = (tn + n*(n+1)//2) % mod
tn = tn*M*M % mod

for m in range(M):
    tm = (tm + m*(m+1)//2) % mod
tm = tm*N*N % mod

class combinationmod():
    def __init__(self, MAX, mod):
        self.mod = mod
        self.fac = [0]*(MAX+1)
        self.finv = [0]*(MAX+1)
        self.inv = [0]*(MAX+1)
        self.fac[0] = self.fac[1] = 1
        self.finv[0] = self.finv[1] = 1
        self.inv[1] = 1
        for i in range(2, MAX+1):
            self.fac[i] = self.fac[i-1]*i % mod
            self.inv[i] = (-self.inv[mod % i]*(mod//i)) % mod
            self.finv[i] = self.finv[i-1] * self.inv[i] % mod
    def nCk(self,n,k):
        if n<k or n<0 or k<0:
            return 0
        return self.fac[n]*(self.finv[k]*self.finv[n-k]%self.mod)%self.mod
 
c = combinationmod(200000,int(1e9+7))

ans = (tn + tm)*c.nCk(N*M-2, K-2) %mod
print(ans) N, M, K = list(map(int, input().split())) N list(map(int, input().split())) list 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 tn = 0 tn 0 tm = 0 tm 0 for n in range(N):
    tn = (tn + n*(n+1)//2) % mod n range(N) range N tn = (tn + n*(n+1)//2) % mod tn (tn + n*(n+1)//2) % mod tn + n*(n+1)//2 tn n*(n+1)//2 n*(n+1) n n+1 n 1 2 mod tn = tn*M*M % mod tn tn*M*M % mod tn*M*M tn*M tn M M mod for m in range(M):
    tm = (tm + m*(m+1)//2) % mod m range(M) range M tm = (tm + m*(m+1)//2) % mod tm (tm + m*(m+1)//2) % mod tm + m*(m+1)//2 tm m*(m+1)//2 m*(m+1) m m+1 m 1 2 mod tm = tm*N*N % mod tm tm*N*N % mod tm*N*N tm*N tm N N mod class combinationmod():
    def __init__(self, MAX, mod):
        self.mod = mod
        self.fac = [0]*(MAX+1)
        self.finv = [0]*(MAX+1)
        self.inv = [0]*(MAX+1)
        self.fac[0] = self.fac[1] = 1
        self.finv[0] = self.finv[1] = 1
        self.inv[1] = 1
        for i in range(2, MAX+1):
            self.fac[i] = self.fac[i-1]*i % mod
            self.inv[i] = (-self.inv[mod % i]*(mod//i)) % mod
            self.finv[i] = self.finv[i-1] * self.inv[i] % mod
    def nCk(self,n,k):
        if n<k or n<0 or k<0:
            return 0
        return self.fac[n]*(self.finv[k]*self.finv[n-k]%self.mod)%self.mod
  combinationmod def __init__(self, MAX, mod):
        self.mod = mod
        self.fac = [0]*(MAX+1)
        self.finv = [0]*(MAX+1)
        self.inv = [0]*(MAX+1)
        self.fac[0] = self.fac[1] = 1
        self.finv[0] = self.finv[1] = 1
        self.inv[1] = 1
        for i in range(2, MAX+1):
            self.fac[i] = self.fac[i-1]*i % mod
            self.inv[i] = (-self.inv[mod % i]*(mod//i)) % mod
            self.finv[i] = self.finv[i-1] * self.inv[i] % mod
     __init__ self.mod = mod self.mod self mod mod self.fac = [0]*(MAX+1) self.fac self fac [0]*(MAX+1) [0] 0 MAX+1 MAX 1 self.finv = [0]*(MAX+1) self.finv self finv [0]*(MAX+1) [0] 0 MAX+1 MAX 1 self.inv = [0]*(MAX+1) self.inv self inv [0]*(MAX+1) [0] 0 MAX+1 MAX 1 self.fac[0] = self.fac[1] = 1 self.fac[0] self.fac self fac 0 1 = self.fac[1] = 1 self.fac[1] self.fac self fac 1 1 self.finv[0] = self.finv[1] = 1 self.finv[0] self.finv self finv 0 1 = self.finv[1] = 1 self.finv[1] self.finv self finv 1 1 self.inv[1] = 1 self.inv[1] self.inv self inv 1 1 for i in range(2, MAX+1):
            self.fac[i] = self.fac[i-1]*i % mod
            self.inv[i] = (-self.inv[mod % i]*(mod//i)) % mod
            self.finv[i] = self.finv[i-1] * self.inv[i] % mod
     i range(2, MAX+1) range 2 MAX+1 MAX 1 self.fac[i] = self.fac[i-1]*i % mod self.fac[i] self.fac self fac i self.fac[i-1]*i % mod self.fac[i-1]*i self.fac[i-1] self.fac self fac i-1 i 1 i mod self.inv[i] = (-self.inv[mod % i]*(mod//i)) % mod self.inv[i] self.inv self inv i (-self.inv[mod % i]*(mod//i)) % mod -self.inv[mod % i]*(mod//i) -self.inv[mod % i] self.inv[mod % i] self.inv self inv mod % i mod i mod//i mod i mod self.finv[i] = self.finv[i-1] * self.inv[i] % mod self.finv[i] self.finv self finv i self.finv[i-1] * self.inv[i] % mod self.finv[i-1] * self.inv[i] self.finv[i-1] self.finv self finv i-1 i 1 self.inv[i] self.inv self inv i mod self self MAX MAX mod mod def nCk(self,n,k):
        if n<k or n<0 or k<0:
            return 0
        return self.fac[n]*(self.finv[k]*self.finv[n-k]%self.mod)%self.mod
  nCk if n<k or n<0 or k<0:
            return 0
         n<k or n<0 or k<0 n<k or n<0 n<k n k n<0 n 0 k<0 k 0 return 0 0 return self.fac[n]*(self.finv[k]*self.finv[n-k]%self.mod)%self.mod self.fac[n]*(self.finv[k]*self.finv[n-k]%self.mod)%self.mod self.fac[n]*(self.finv[k]*self.finv[n-k]%self.mod) self.fac[n] self.fac self fac n self.finv[k]*self.finv[n-k]%self.mod self.finv[k]*self.finv[n-k] self.finv[k] self.finv self finv k self.finv[n-k] self.finv self finv n-k n k self.mod self mod self.mod self mod self self n n k k c = combinationmod(200000,int(1e9+7)) c combinationmod(200000,int(1e9+7)) combinationmod 200000 int(1e9+7) int 1e9+7 1e9 7 ans = (tn + tm)*c.nCk(N*M-2, K-2) %mod ans (tn + tm)*c.nCk(N*M-2, K-2) %mod (tn + tm)*c.nCk(N*M-2, K-2) tn + tm tn tm c.nCk(N*M-2, K-2) c.nCk c nCk N*M-2 N*M N M 2 K-2 K 2 mod print(ans) print ans tn = tn*M*M % mod tn*M*M % mod tn tm = tm*N*N % mod tm*N*N % mod tm tm = (tm + m*(m+1)//2) % mod (tm + m*(m+1)//2) % mod tm mod = 10**9 + 7 10**9 + 7 mod class combinationmod():
    def __init__(self, MAX, mod):
        self.mod = mod
        self.fac = [0]*(MAX+1)
        self.finv = [0]*(MAX+1)
        self.inv = [0]*(MAX+1)
        self.fac[0] = self.fac[1] = 1
        self.finv[0] = self.finv[1] = 1
        self.inv[1] = 1
        for i in range(2, MAX+1):
            self.fac[i] = self.fac[i-1]*i % mod
            self.inv[i] = (-self.inv[mod % i]*(mod//i)) % mod
            self.finv[i] = self.finv[i-1] * self.inv[i] % mod
    def nCk(self,n,k):
        if n<k or n<0 or k<0:
            return 0
        return self.fac[n]*(self.finv[k]*self.finv[n-k]%self.mod)%self.mod
  class combinationmod():
    def __init__(self, MAX, mod):
        self.mod = mod
        self.fac = [0]*(MAX+1)
        self.finv = [0]*(MAX+1)
        self.inv = [0]*(MAX+1)
        self.fac[0] = self.fac[1] = 1
        self.finv[0] = self.finv[1] = 1
        self.inv[1] = 1
        for i in range(2, MAX+1):
            self.fac[i] = self.fac[i-1]*i % mod
            self.inv[i] = (-self.inv[mod % i]*(mod//i)) % mod
            self.finv[i] = self.finv[i-1] * self.inv[i] % mod
    def nCk(self,n,k):
        if n<k or n<0 or k<0:
            return 0
        return self.fac[n]*(self.finv[k]*self.finv[n-k]%self.mod)%self.mod
  combinationmod N, M, K = list(map(int, input().split())) list(map(int, input().split())) N M, K = list(map(int, input().split())) list(map(int, input().split())) M tn = 0 0 tn K = list(map(int, input().split())) list(map(int, input().split())) K c = combinationmod(200000,int(1e9+7)) combinationmod(200000,int(1e9+7)) c tn = (tn + n*(n+1)//2) % mod (tn + n*(n+1)//2) % mod tn tm = 0 0 tm ans = (tn + tm)*c.nCk(N*M-2, K-2) %mod (tn + tm)*c.nCk(N*M-2, K-2) %mod ans
N, M, K = list(map(int, input().split()))
mod = 10**9 + 7

tn = 0
tm = 0

for n in range(N):
    tn = (tn + n*(n+1)//2) % mod
tn = tn*M*M % mod

for m in range(M):
    tm = (tm + m*(m+1)//2) % mod
tm = tm*N*N % mod

class combinationmod():
    def __init__(self, MAX, mod):
        self.mod = mod
        self.fac = [0]*(MAX+1)
        self.finv = [0]*(MAX+1)
        self.inv = [0]*(MAX+1)
        self.fac[0] = self.fac[1] = 1
        self.finv[0] = self.finv[1] = 1
        self.inv[1] = 1
        for i in range(2, MAX+1):
            self.fac[i] = self.fac[i-1]*i % mod
            self.inv[i] = (-self.inv[mod % i]*(mod//i)) % mod
            self.finv[i] = self.finv[i-1] * self.inv[i] % mod
    def nCk(self,n,k):
        if n<k or n<0 or k<0:
            return 0
        return self.fac[n]*(self.finv[k]*self.finv[n-k]%self.mod)%self.mod
 
c = combinationmod(200000,int(1e9+7))

ans = (tn + tm)*c.nCk(N*M-2, K-2) %mod
print(ans)