from collections import defaultdict, deque, Counter
from heapq import heappush, heappop, heapify
import math
import bisect
import random
from itertools import permutations, accumulate, combinations
import sys
import string
from bisect import bisect_left, bisect_right
from math import factorial, ceil, floor
from functools import reduce



INF = float('inf')
def LI(): return list(map(int, sys.stdin.readline().split()))
def I(): return int(sys.stdin.readline())
def LS(): return sys.stdin.readline().split()
def S(): return sys.stdin.readline().strip()
def IR(n): return [I() for i in range(n)]
def LIR(n): return [LI() for i in range(n)]
def SR(n): return [S() for i in range(n)]
def LSR(n): return [LS() for i in range(n)]
def SRL(n): return [list(S()) for i in range(n)]
def MSRL(n): return [[int(j) for j in list(S())] for i in range(n)]
mod = 1000000007


def mod_combination(n, r, mod=10 ** 9 + 7):
    fact = 1
    for i in range(n - r + 1, n + 1):
        fact = fact * i % mod

    divisor = 1
    for j in range(1, r + 1):
        divisor = divisor * j % mod

    return fact * pow(divisor, mod - 2, mod) % mod


def main():
    mod = 10**9+7
    n, m, k = LI()
    # 　ある配置を固定した時、その2つの配置でmanhattan距離が計算される回数は、他の組み合わせ数。
    combination = mod_combination(n*m-2, k-2)
    x=y=0
    for i in range(1, n):
        x += i * (n-i)
    for j in range(1, m):
        y += j * (m-j)
    return (((m ** 2) % mod * x % mod) + ((n ** 2) % mod * y % mod)) * combination % mod


print(main()) from collections import defaultdict, deque, Counter from heapq import heappush, heappop, heapify import math math import bisect bisect import random random from itertools import permutations, accumulate, combinations import sys sys import string string from bisect import bisect_left, bisect_right from math import factorial, ceil, floor from functools import reduce INF = float('inf') INF float('inf') float 'inf' def LI(): return list(map(int, sys.stdin.readline().split())) LI def I(): return int(sys.stdin.readline()) I def LS(): return sys.stdin.readline().split() LS def S(): return sys.stdin.readline().strip() S I() for i in range(n) for i in range(n) i range(n) range n for i in range(n) I() I def IR(n): return [I() for i in range(n)] IR n n LI() for i in range(n) for i in range(n) i range(n) range n for i in range(n) LI() LI def LIR(n): return [LI() for i in range(n)] LIR n n S() for i in range(n) for i in range(n) i range(n) range n for i in range(n) S() S def SR(n): return [S() for i in range(n)] SR n n LS() for i in range(n) for i in range(n) i range(n) range n for i in range(n) LS() LS def LSR(n): return [LS() for i in range(n)] LSR n n list(S()) for i in range(n) for i in range(n) i range(n) range n for i in range(n) list(S()) list S() S def SRL(n): return [list(S()) for i in range(n)] SRL n n [int(j) for j in list(S())] for i in range(n) for i in range(n) i range(n) range n for i in range(n) [int(j) for j in list(S())] def MSRL(n): return [[int(j) for j in list(S())] for i in range(n)] MSRL n n mod = 1000000007 mod 1000000007 def mod_combination(n, r, mod=10 ** 9 + 7):
    fact = 1
    for i in range(n - r + 1, n + 1):
        fact = fact * i % mod

    divisor = 1
    for j in range(1, r + 1):
        divisor = divisor * j % mod

    return fact * pow(divisor, mod - 2, mod) % mod mod_combination fact = 1 fact 1 for i in range(n - r + 1, n + 1):
        fact = fact * i % mod

     i range(n - r + 1, n + 1) range n - r + 1 n - r n r 1 n + 1 n 1 fact = fact * i % mod fact fact * i % mod fact * i fact i mod divisor = 1 divisor 1 for j in range(1, r + 1):
        divisor = divisor * j % mod

     j range(1, r + 1) range 1 r + 1 r 1 divisor = divisor * j % mod divisor divisor * j % mod divisor * j divisor j mod return fact * pow(divisor, mod - 2, mod) % mod fact * pow(divisor, mod - 2, mod) % mod fact * pow(divisor, mod - 2, mod) fact pow(divisor, mod - 2, mod) pow divisor mod - 2 mod 2 mod mod n n r r mod=10 ** 9 + 7 mod 10 ** 9 + 7 10 ** 9 10 9 7 def main():
    mod = 10**9+7
    n, m, k = LI()
    # 　ある配置を固定した時、その2つの配置でmanhattan距離が計算される回数は、他の組み合わせ数。
    combination = mod_combination(n*m-2, k-2)
    x=y=0
    for i in range(1, n):
        x += i * (n-i)
    for j in range(1, m):
        y += j * (m-j)
    return (((m ** 2) % mod * x % mod) + ((n ** 2) % mod * y % mod)) * combination % mod main mod = 10**9+7 mod 10**9+7 10**9 10 9 7 n, m, k = LI() n LI() LI m k combination = mod_combination(n*m-2, k-2) combination mod_combination(n*m-2, k-2) mod_combination n*m-2 n*m n m 2 k-2 k 2 x=y=0 x 0 =y=0 y 0 for i in range(1, n):
        x += i * (n-i)
     i range(1, n) range 1 n x += i * (n-i) x i * (n-i) i n-i n i for j in range(1, m):
        y += j * (m-j)
     j range(1, m) range 1 m y += j * (m-j) y j * (m-j) j m-j m j return (((m ** 2) % mod * x % mod) + ((n ** 2) % mod * y % mod)) * combination % mod (((m ** 2) % mod * x % mod) + ((n ** 2) % mod * y % mod)) * combination % mod (((m ** 2) % mod * x % mod) + ((n ** 2) % mod * y % mod)) * combination ((m ** 2) % mod * x % mod) + ((n ** 2) % mod * y % mod) (m ** 2) % mod * x % mod (m ** 2) % mod * x (m ** 2) % mod m ** 2 m 2 mod x mod (n ** 2) % mod * y % mod (n ** 2) % mod * y (n ** 2) % mod n ** 2 n 2 mod y mod combination mod print(main()) print main() main def S(): return sys.stdin.readline().strip() def S(): return sys.stdin.readline().strip() S def mod_combination(n, r, mod=10 ** 9 + 7):
    fact = 1
    for i in range(n - r + 1, n + 1):
        fact = fact * i % mod

    divisor = 1
    for j in range(1, r + 1):
        divisor = divisor * j % mod

    return fact * pow(divisor, mod - 2, mod) % mod def mod_combination(n, r, mod=10 ** 9 + 7):
    fact = 1
    for i in range(n - r + 1, n + 1):
        fact = fact * i % mod

    divisor = 1
    for j in range(1, r + 1):
        divisor = divisor * j % mod

    return fact * pow(divisor, mod - 2, mod) % mod mod_combination INF = float('inf') float('inf') INF def MSRL(n): return [[int(j) for j in list(S())] for i in range(n)] def MSRL(n): return [[int(j) for j in list(S())] for i in range(n)] MSRL def LI(): return list(map(int, sys.stdin.readline().split())) def LI(): return list(map(int, sys.stdin.readline().split())) LI def SRL(n): return [list(S()) for i in range(n)] def SRL(n): return [list(S()) for i in range(n)] SRL def I(): return int(sys.stdin.readline()) def I(): return int(sys.stdin.readline()) I def SR(n): return [S() for i in range(n)] def SR(n): return [S() for i in range(n)] SR def LSR(n): return [LS() for i in range(n)] def LSR(n): return [LS() for i in range(n)] LSR mod = 1000000007 1000000007 mod def main():
    mod = 10**9+7
    n, m, k = LI()
    # 　ある配置を固定した時、その2つの配置でmanhattan距離が計算される回数は、他の組み合わせ数。
    combination = mod_combination(n*m-2, k-2)
    x=y=0
    for i in range(1, n):
        x += i * (n-i)
    for j in range(1, m):
        y += j * (m-j)
    return (((m ** 2) % mod * x % mod) + ((n ** 2) % mod * y % mod)) * combination % mod def main():
    mod = 10**9+7
    n, m, k = LI()
    # 　ある配置を固定した時、その2つの配置でmanhattan距離が計算される回数は、他の組み合わせ数。
    combination = mod_combination(n*m-2, k-2)
    x=y=0
    for i in range(1, n):
        x += i * (n-i)
    for j in range(1, m):
        y += j * (m-j)
    return (((m ** 2) % mod * x % mod) + ((n ** 2) % mod * y % mod)) * combination % mod main def LIR(n): return [LI() for i in range(n)] def LIR(n): return [LI() for i in range(n)] LIR def IR(n): return [I() for i in range(n)] def IR(n): return [I() for i in range(n)] IR def LS(): return sys.stdin.readline().split() def LS(): return sys.stdin.readline().split() LS
from collections import defaultdict, deque, Counter
from heapq import heappush, heappop, heapify
import math
import bisect
import random
from itertools import permutations, accumulate, combinations
import sys
import string
from bisect import bisect_left, bisect_right
from math import factorial, ceil, floor
from functools import reduce



INF = float('inf')
def LI(): return list(map(int, sys.stdin.readline().split()))
def I(): return int(sys.stdin.readline())
def LS(): return sys.stdin.readline().split()
def S(): return sys.stdin.readline().strip()
def IR(n): return [I() for i in range(n)]
def LIR(n): return [LI() for i in range(n)]
def SR(n): return [S() for i in range(n)]
def LSR(n): return [LS() for i in range(n)]
def SRL(n): return [list(S()) for i in range(n)]
def MSRL(n): return [[int(j) for j in list(S())] for i in range(n)]
mod = 1000000007


def mod_combination(n, r, mod=10 ** 9 + 7):
    fact = 1
    for i in range(n - r + 1, n + 1):
        fact = fact * i % mod

    divisor = 1
    for j in range(1, r + 1):
        divisor = divisor * j % mod

    return fact * pow(divisor, mod - 2, mod) % mod


def main():
    mod = 10**9+7
    n, m, k = LI()
    # 　ある配置を固定した時、その2つの配置でmanhattan距離が計算される回数は、他の組み合わせ数。
    combination = mod_combination(n*m-2, k-2)
    x=y=0
    for i in range(1, n):
        x += i * (n-i)
    for j in range(1, m):
        y += j * (m-j)
    return (((m ** 2) % mod * x % mod) + ((n ** 2) % mod * y % mod)) * combination % mod


print(main())