n,m,k=map(int,input().split())
mod=pow(10,9)+7


# コンビネーション、さらに高速。あらかじめO(N)の計算をすることでのちの計算が早くなる
def cmb(n,r,mod):
  if (r<0 or r>n):
    return 0
  r=min(r,n-r)
  return g1[n]*g2[r]*g2[n-r]%mod
g1=[1,1] # g1[i]=i! % mod　:階乗
g2=[1,1] # g2[i]=(i!)^(-1) % mod　:階乗の逆元
inverse=[0,1]
for i in range(2,n*m+1):
  g1.append((g1[-1]*i)%mod)
  inverse.append((-inverse[mod%i]*(mod//i))%mod)
  g2.append((g2[-1]*inverse[-1])%mod)

ans=0
for d in range(1,n):
  tmp=d*(n-d)*m**2
  tmp%=mod
  tmp*=cmb(n*m-2,k-2,mod)
  ans+=tmp
  ans%=mod
for d in range(1,m):
  tmp=d*(m-d)*n**2
  tmp%=mod
  tmp*=cmb(n*m-2,k-2,mod)
  ans+=tmp
  ans%=mod
print(ans) n,m,k=map(int,input().split()) n map(int,input().split()) map int input().split() ().split () input split m k mod=pow(10,9)+7 mod pow(10,9)+7 pow(10,9) pow 10 9 7 def cmb(n,r,mod):
  if (r<0 or r>n):
    return 0
  r=min(r,n-r)
  return g1[n]*g2[r]*g2[n-r]%mod cmb if (r<0 or r>n):
    return 0
   r<0 or r>n r<0 r 0 r>n r n return 0 0 r=min(r,n-r) r min(r,n-r) min r n-r n r return g1[n]*g2[r]*g2[n-r]%mod g1[n]*g2[r]*g2[n-r]%mod g1[n]*g2[r]*g2[n-r] g1[n]*g2[r] g1[n] g1 n g2[r] g2 r g2[n-r] g2 n-r n r mod n n r r mod mod g1=[1,1] g1 [1,1] 1 1 g2=[1,1] g2 [1,1] 1 1 inverse=[0,1] inverse [0,1] 0 1 for i in range(2,n*m+1):
  g1.append((g1[-1]*i)%mod)
  inverse.append((-inverse[mod%i]*(mod//i))%mod)
  g2.append((g2[-1]*inverse[-1])%mod) i range(2,n*m+1) range 2 n*m+1 n*m n m 1 g1.append((g1[-1]*i)%mod) g1.append g1 append (g1[-1]*i)%mod g1[-1]*i g1[-1] g1 -1 i mod inverse.append((-inverse[mod%i]*(mod//i))%mod) inverse.append inverse append (-inverse[mod%i]*(mod//i))%mod -inverse[mod%i]*(mod//i) -inverse[mod%i] inverse[mod%i] inverse mod%i mod i mod//i mod i mod g2.append((g2[-1]*inverse[-1])%mod) g2.append g2 append (g2[-1]*inverse[-1])%mod g2[-1]*inverse[-1] g2[-1] g2 -1 inverse[-1] inverse -1 mod ans=0 ans 0 for d in range(1,n):
  tmp=d*(n-d)*m**2
  tmp%=mod
  tmp*=cmb(n*m-2,k-2,mod)
  ans+=tmp
  ans%=mod d range(1,n) range 1 n tmp=d*(n-d)*m**2 tmp d*(n-d)*m**2 d*(n-d) d n-d n d m**2 m 2 tmp%=mod tmp mod tmp*=cmb(n*m-2,k-2,mod) tmp cmb(n*m-2,k-2,mod) cmb n*m-2 n*m n m 2 k-2 k 2 mod ans+=tmp ans tmp ans%=mod ans mod for d in range(1,m):
  tmp=d*(m-d)*n**2
  tmp%=mod
  tmp*=cmb(n*m-2,k-2,mod)
  ans+=tmp
  ans%=mod d range(1,m) range 1 m tmp=d*(m-d)*n**2 tmp d*(m-d)*n**2 d*(m-d) d m-d m d n**2 n 2 tmp%=mod tmp mod tmp*=cmb(n*m-2,k-2,mod) tmp cmb(n*m-2,k-2,mod) cmb n*m-2 n*m n m 2 k-2 k 2 mod ans+=tmp ans tmp ans%=mod ans mod print(ans) print ans n,m,k=map(int,input().split()) map(int,input().split()) n ans+=tmp tmp ans m,k=map(int,input().split()) map(int,input().split()) m tmp=d*(m-d)*n**2 d*(m-d)*n**2 tmp ans%=mod mod ans tmp*=cmb(n*m-2,k-2,mod) cmb(n*m-2,k-2,mod) tmp ans+=tmp tmp ans k=map(int,input().split()) map(int,input().split()) k tmp*=cmb(n*m-2,k-2,mod) cmb(n*m-2,k-2,mod) tmp ans=0 0 ans mod=pow(10,9)+7 pow(10,9)+7 mod inverse=[0,1] [0,1] inverse tmp%=mod mod tmp g1=[1,1] [1,1] g1 g2=[1,1] [1,1] g2 ans%=mod mod ans tmp%=mod mod tmp tmp=d*(n-d)*m**2 d*(n-d)*m**2 tmp def cmb(n,r,mod):
  if (r<0 or r>n):
    return 0
  r=min(r,n-r)
  return g1[n]*g2[r]*g2[n-r]%mod def cmb(n,r,mod):
  if (r<0 or r>n):
    return 0
  r=min(r,n-r)
  return g1[n]*g2[r]*g2[n-r]%mod cmb
n,m,k=map(int,input().split())
mod=pow(10,9)+7


# コンビネーション、さらに高速。あらかじめO(N)の計算をすることでのちの計算が早くなる
def cmb(n,r,mod):
  if (r<0 or r>n):
    return 0
  r=min(r,n-r)
  return g1[n]*g2[r]*g2[n-r]%mod
g1=[1,1] # g1[i]=i! % mod　:階乗
g2=[1,1] # g2[i]=(i!)^(-1) % mod　:階乗の逆元
inverse=[0,1]
for i in range(2,n*m+1):
  g1.append((g1[-1]*i)%mod)
  inverse.append((-inverse[mod%i]*(mod//i))%mod)
  g2.append((g2[-1]*inverse[-1])%mod)

ans=0
for d in range(1,n):
  tmp=d*(n-d)*m**2
  tmp%=mod
  tmp*=cmb(n*m-2,k-2,mod)
  ans+=tmp
  ans%=mod
for d in range(1,m):
  tmp=d*(m-d)*n**2
  tmp%=mod
  tmp*=cmb(n*m-2,k-2,mod)
  ans+=tmp
  ans%=mod
print(ans)