import sys
stdin = sys.stdin

sys.setrecursionlimit(10 ** 7)

def li(): return map(int, stdin.readline().split())
def li_(): return map(lambda x: int(x) - 1, stdin.readline().split())
def lf(): return map(float, stdin.readline().split())
def ls(): return stdin.readline().split()
def ns(): return stdin.readline().rstrip()
def lc(): return list(ns())
def ni(): return int(stdin.readline())
def nf(): return float(stdin.readline())


n, m, k = li()
MOD = 10**9 + 7

ans = 0


# nの逆元のリスト
def inv_mod(n: int, mod: int) -> list:
    inv = [0, 1]
    for i in range(2, n + 1):
        inv.append(mod - ((mod // i) * inv[mod % i]) % mod)
    return inv


# nの階乗のリスト
def fact(n: int, mod: int) -> list:
    fac = [1, 1]
    res = 1
    for i in range(2, n + 1):
        res = res * i % mod
        fac.append(res)
    return fac


# nの階乗の逆元のリスト
def fact_inv(n: int, inv: list, mod: int) -> list:
    facInv = [1, 1]
    for i in range(2, n + 1):
        facInv.append(facInv[i - 1] * inv[i] % mod)
    return facInv


# 二項係数
def nCr(n: int, r: int, mod: int, fac: list, facInv: list) -> int:
    if not (0 <= r and r <= n):
        return 0

    return ((fac[n] * facInv[r]) % mod) * facInv[n - r] % mod


def onedim(width: int, depth: int, mod: int):
    ret = 0
    for d in range(width):
        ret += depth**2 * (width - d) * d * nCr(m*n-2, k-2, mod, fac, facInv)
        ret %= mod

    return ret

fac = fact(n*m+1, MOD)
facInv = fact_inv(n*m, inv_mod(m*n+1, MOD), MOD)

print((onedim(n, m, MOD) + onedim(m, n, MOD)) % MOD) import sys sys stdin = sys.stdin stdin sys.stdin sys stdin sys.setrecursionlimit(10 ** 7) sys.setrecursionlimit sys setrecursionlimit 10 ** 7 10 7 def li(): return map(int, stdin.readline().split()) li def li_(): return map(lambda x: int(x) - 1, stdin.readline().split()) li_ def lf(): return map(float, stdin.readline().split()) lf def ls(): return stdin.readline().split() ls def ns(): return stdin.readline().rstrip() ns def lc(): return list(ns()) lc def ni(): return int(stdin.readline()) ni def nf(): return float(stdin.readline()) nf n, m, k = li() n li() li m k MOD = 10**9 + 7 MOD 10**9 + 7 10**9 10 9 7 ans = 0 ans 0 def inv_mod(n: int, mod: int) -> list:
    inv = [0, 1]
    for i in range(2, n + 1):
        inv.append(mod - ((mod // i) * inv[mod % i]) % mod)
    return inv


# nの階乗のリスト inv_mod inv = [0, 1] inv [0, 1] 0 1 for i in range(2, n + 1):
        inv.append(mod - ((mod // i) * inv[mod % i]) % mod)
     i range(2, n + 1) range 2 n + 1 n 1 inv.append(mod - ((mod // i) * inv[mod % i]) % mod) inv.append inv append mod - ((mod // i) * inv[mod % i]) % mod mod ((mod // i) * inv[mod % i]) % mod (mod // i) * inv[mod % i] mod // i mod i inv[mod % i] inv mod % i mod i mod return inv inv n: int n mod: int mod def fact(n: int, mod: int) -> list:
    fac = [1, 1]
    res = 1
    for i in range(2, n + 1):
        res = res * i % mod
        fac.append(res)
    return fac


# nの階乗の逆元のリスト fact fac = [1, 1] fac [1, 1] 1 1 res = 1 res 1 for i in range(2, n + 1):
        res = res * i % mod
        fac.append(res)
     i range(2, n + 1) range 2 n + 1 n 1 res = res * i % mod res res * i % mod res * i res i mod fac.append(res) fac.append fac append res return fac fac n: int n mod: int mod def fact_inv(n: int, inv: list, mod: int) -> list:
    facInv = [1, 1]
    for i in range(2, n + 1):
        facInv.append(facInv[i - 1] * inv[i] % mod)
    return facInv


# 二項係数 fact_inv facInv = [1, 1] facInv [1, 1] 1 1 for i in range(2, n + 1):
        facInv.append(facInv[i - 1] * inv[i] % mod)
     i range(2, n + 1) range 2 n + 1 n 1 facInv.append(facInv[i - 1] * inv[i] % mod) facInv.append facInv append facInv[i - 1] * inv[i] % mod facInv[i - 1] * inv[i] facInv[i - 1] facInv i - 1 i 1 inv[i] inv i mod return facInv facInv n: int n inv: list inv mod: int mod def nCr(n: int, r: int, mod: int, fac: list, facInv: list) -> int:
    if not (0 <= r and r <= n):
        return 0

    return ((fac[n] * facInv[r]) % mod) * facInv[n - r] % mod nCr if not (0 <= r and r <= n):
        return 0

     not (0 <= r and r <= n) 0 <= r and r <= n 0 <= r 0 r r <= n r n return 0 0 return ((fac[n] * facInv[r]) % mod) * facInv[n - r] % mod ((fac[n] * facInv[r]) % mod) * facInv[n - r] % mod ((fac[n] * facInv[r]) % mod) * facInv[n - r] (fac[n] * facInv[r]) % mod fac[n] * facInv[r] fac[n] fac n facInv[r] facInv r mod facInv[n - r] facInv n - r n r mod n: int n r: int r mod: int mod fac: list fac facInv: list facInv def onedim(width: int, depth: int, mod: int):
    ret = 0
    for d in range(width):
        ret += depth**2 * (width - d) * d * nCr(m*n-2, k-2, mod, fac, facInv)
        ret %= mod

    return ret onedim ret = 0 ret 0 for d in range(width):
        ret += depth**2 * (width - d) * d * nCr(m*n-2, k-2, mod, fac, facInv)
        ret %= mod

     d range(width) range width ret += depth**2 * (width - d) * d * nCr(m*n-2, k-2, mod, fac, facInv) ret depth**2 * (width - d) * d * nCr(m*n-2, k-2, mod, fac, facInv) depth**2 * (width - d) * d depth**2 * (width - d) depth**2 depth 2 width - d width d d nCr(m*n-2, k-2, mod, fac, facInv) nCr m*n-2 m*n m n 2 k-2 k 2 mod fac facInv ret %= mod ret mod return ret ret width: int width depth: int depth mod: int mod fac = fact(n*m+1, MOD) fac fact(n*m+1, MOD) fact n*m+1 n*m n m 1 MOD facInv = fact_inv(n*m, inv_mod(m*n+1, MOD), MOD) facInv fact_inv(n*m, inv_mod(m*n+1, MOD), MOD) fact_inv n*m n m inv_mod(m*n+1, MOD) inv_mod m*n+1 m*n m n 1 MOD MOD print((onedim(n, m, MOD) + onedim(m, n, MOD)) % MOD) print (onedim(n, m, MOD) + onedim(m, n, MOD)) % MOD onedim(n, m, MOD) + onedim(m, n, MOD) onedim(n, m, MOD) onedim n m MOD onedim(m, n, MOD) onedim m n MOD MOD m, k = li() li() m k = li() li() k def nf(): return float(stdin.readline()) def nf(): return float(stdin.readline()) nf def fact(n: int, mod: int) -> list:
    fac = [1, 1]
    res = 1
    for i in range(2, n + 1):
        res = res * i % mod
        fac.append(res)
    return fac


# nの階乗の逆元のリスト def fact(n: int, mod: int) -> list:
    fac = [1, 1]
    res = 1
    for i in range(2, n + 1):
        res = res * i % mod
        fac.append(res)
    return fac


# nの階乗の逆元のリスト fact def lc(): return list(ns()) def lc(): return list(ns()) lc n, m, k = li() li() n MOD = 10**9 + 7 10**9 + 7 MOD stdin = sys.stdin sys.stdin stdin def li_(): return map(lambda x: int(x) - 1, stdin.readline().split()) def li_(): return map(lambda x: int(x) - 1, stdin.readline().split()) li_ def onedim(width: int, depth: int, mod: int):
    ret = 0
    for d in range(width):
        ret += depth**2 * (width - d) * d * nCr(m*n-2, k-2, mod, fac, facInv)
        ret %= mod

    return ret def onedim(width: int, depth: int, mod: int):
    ret = 0
    for d in range(width):
        ret += depth**2 * (width - d) * d * nCr(m*n-2, k-2, mod, fac, facInv)
        ret %= mod

    return ret onedim def ns(): return stdin.readline().rstrip() def ns(): return stdin.readline().rstrip() ns def nCr(n: int, r: int, mod: int, fac: list, facInv: list) -> int:
    if not (0 <= r and r <= n):
        return 0

    return ((fac[n] * facInv[r]) % mod) * facInv[n - r] % mod def nCr(n: int, r: int, mod: int, fac: list, facInv: list) -> int:
    if not (0 <= r and r <= n):
        return 0

    return ((fac[n] * facInv[r]) % mod) * facInv[n - r] % mod nCr def fact_inv(n: int, inv: list, mod: int) -> list:
    facInv = [1, 1]
    for i in range(2, n + 1):
        facInv.append(facInv[i - 1] * inv[i] % mod)
    return facInv


# 二項係数 def fact_inv(n: int, inv: list, mod: int) -> list:
    facInv = [1, 1]
    for i in range(2, n + 1):
        facInv.append(facInv[i - 1] * inv[i] % mod)
    return facInv


# 二項係数 fact_inv def ni(): return int(stdin.readline()) def ni(): return int(stdin.readline()) ni ans = 0 0 ans def li(): return map(int, stdin.readline().split()) def li(): return map(int, stdin.readline().split()) li facInv = fact_inv(n*m, inv_mod(m*n+1, MOD), MOD) fact_inv(n*m, inv_mod(m*n+1, MOD), MOD) facInv def ls(): return stdin.readline().split() def ls(): return stdin.readline().split() ls def inv_mod(n: int, mod: int) -> list:
    inv = [0, 1]
    for i in range(2, n + 1):
        inv.append(mod - ((mod // i) * inv[mod % i]) % mod)
    return inv


# nの階乗のリスト def inv_mod(n: int, mod: int) -> list:
    inv = [0, 1]
    for i in range(2, n + 1):
        inv.append(mod - ((mod // i) * inv[mod % i]) % mod)
    return inv


# nの階乗のリスト inv_mod fac = fact(n*m+1, MOD) fact(n*m+1, MOD) fac def lf(): return map(float, stdin.readline().split()) def lf(): return map(float, stdin.readline().split()) lf
import sys
stdin = sys.stdin

sys.setrecursionlimit(10 ** 7)

def li(): return map(int, stdin.readline().split())
def li_(): return map(lambda x: int(x) - 1, stdin.readline().split())
def lf(): return map(float, stdin.readline().split())
def ls(): return stdin.readline().split()
def ns(): return stdin.readline().rstrip()
def lc(): return list(ns())
def ni(): return int(stdin.readline())
def nf(): return float(stdin.readline())


n, m, k = li()
MOD = 10**9 + 7

ans = 0


# nの逆元のリスト
def inv_mod(n: int, mod: int) -> list:
    inv = [0, 1]
    for i in range(2, n + 1):
        inv.append(mod - ((mod // i) * inv[mod % i]) % mod)
    return inv


# nの階乗のリスト
def fact(n: int, mod: int) -> list:
    fac = [1, 1]
    res = 1
    for i in range(2, n + 1):
        res = res * i % mod
        fac.append(res)
    return fac


# nの階乗の逆元のリスト
def fact_inv(n: int, inv: list, mod: int) -> list:
    facInv = [1, 1]
    for i in range(2, n + 1):
        facInv.append(facInv[i - 1] * inv[i] % mod)
    return facInv


# 二項係数
def nCr(n: int, r: int, mod: int, fac: list, facInv: list) -> int:
    if not (0 <= r and r <= n):
        return 0

    return ((fac[n] * facInv[r]) % mod) * facInv[n - r] % mod


def onedim(width: int, depth: int, mod: int):
    ret = 0
    for d in range(width):
        ret += depth**2 * (width - d) * d * nCr(m*n-2, k-2, mod, fac, facInv)
        ret %= mod

    return ret

fac = fact(n*m+1, MOD)
facInv = fact_inv(n*m, inv_mod(m*n+1, MOD), MOD)

print((onedim(n, m, MOD) + onedim(m, n, MOD)) % MOD)