n,m,k=list(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=list(map(int,input().split()))

mod=pow(10,9)+7

ans=0



#n*m-2個の中からk-2個選ぶときの組み合わせ数

cmb=1

for i in range(k-2):

  cmb*=n*m-i-2

  cmb%=mod

  cmb*=pow(i+1,mod-2,mod)

  cmb%=mod

for i in range(1,n):

  tmp=i*(n-i)

  tmp*=m**2

  tmp%=mod

  tmp*=cmb

  tmp%=mod

  ans+=tmp

  ans%=mod

for i in range(1,m):

  tmp=i*(m-i)

  tmp*=n**2

  tmp%=mod

  tmp*=cmb

  tmp%=mod

  ans+=tmp

  ans%=mod

print(ans)
n, m, k = list(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 = list(map(int, input().split()))
mod = pow(10, 9) + 7
ans = 0
# n*m-2個の中からk-2個選ぶときの組み合わせ数
cmb = 1
for i in range(k - 2):
    cmb *= n * m - i - 2
    cmb %= mod
    cmb *= pow(i + 1, mod - 2, mod)
    cmb %= mod
for i in range(1, n):
    tmp = i * (n - i)
    tmp *= m**2
    tmp %= mod
    tmp *= cmb
    tmp %= mod
    ans += tmp
    ans %= mod
for i in range(1, m):
    tmp = i * (m - i)
    tmp *= n**2
    tmp %= mod
    tmp *= cmb
    tmp %= mod
    ans += tmp
    ans %= mod
print(ans)

-# コンビネーション、さらに高速。あらかじめ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) -for d in range(1, n): -    tmp = d * (n - d) * m**2 +# n*m-2個の中からk-2個選ぶときの組み合わせ数 +cmb = 1 +for i in range(k - 2): +    cmb *= n * m - i - 2 +    cmb %= mod +    cmb *= pow(i + 1, mod - 2, mod) +    cmb %= mod +for i in range(1, n): +    tmp = i * (n - i) +    tmp *= m**2 -    tmp *= cmb(n * m - 2, k - 2, mod) +    tmp *= cmb +    tmp %= mod -for d in range(1, m): -    tmp = d * (m - d) * n**2 +for i in range(1, m): +    tmp = i * (m - i) +    tmp *= n**2 -    tmp *= cmb(n * m - 2, k - 2, mod) +    tmp *= cmb +    tmp %= mod