
MAX = 10**9 + 7

def mod_inv(i, mod):
    return pow(i, mod-2, mod)

def combination(_N, _K):
    if _K > (_N/2):
        _K = _N - _K
    up = 1
    low = 1
    for i in range (_K):
        up = up * (_N - i) % MAX
        low = low * (i + 1) % MAX
    ret = up * mod_inv(low, MAX) % MAX
    return ret

def solve():
    N, M, K = [int(_) for _ in raw_input().split()]
    disSum = M*N* (M*(N+1)*(N-1) + N*(M+1)*(M-1)) / 6
    ret = disSum * combination(M*N-2, K-2) % MAX
    print ret

if __name__ == '__main__':
    solve() MAX = 10**9 + 7 MAX 10**9 + 7 10**9 10 9 7 def mod_inv(i, mod):
    return pow(i, mod-2, mod) mod_inv return pow(i, mod-2, mod) pow(i, mod-2, mod) pow i mod-2 mod 2 mod i i mod mod def combination(_N, _K):
    if _K > (_N/2):
        _K = _N - _K
    up = 1
    low = 1
    for i in range (_K):
        up = up * (_N - i) % MAX
        low = low * (i + 1) % MAX
    ret = up * mod_inv(low, MAX) % MAX
    return ret combination if _K > (_N/2):
        _K = _N - _K
     _K > (_N/2) _K _N/2 _N 2 _K = _N - _K _K _N - _K _N _K up = 1 up 1 low = 1 low 1 for i in range (_K):
        up = up * (_N - i) % MAX
        low = low * (i + 1) % MAX
     i range (_K) range _K up = up * (_N - i) % MAX up up * (_N - i) % MAX up * (_N - i) up _N - i _N i MAX low = low * (i + 1) % MAX low low * (i + 1) % MAX low * (i + 1) low i + 1 i 1 MAX ret = up * mod_inv(low, MAX) % MAX ret up * mod_inv(low, MAX) % MAX up * mod_inv(low, MAX) up mod_inv(low, MAX) mod_inv low MAX MAX return ret ret _N _N _K _K def solve():
    N, M, K = [int(_) for _ in raw_input().split()]
    disSum = M*N* (M*(N+1)*(N-1) + N*(M+1)*(M-1)) / 6
    ret = disSum * combination(M*N-2, K-2) % MAX
    print ret solve int(_) for _ in raw_input().split() for _ in raw_input().split() _ raw_input().split() ().split () raw_input split for _ in raw_input().split() int(_) int _ N, M, K = [int(_) for _ in raw_input().split()] N [int(_) for _ in raw_input().split()] M K disSum = M*N* (M*(N+1)*(N-1) + N*(M+1)*(M-1)) / 6 disSum M*N* (M*(N+1)*(N-1) + N*(M+1)*(M-1)) / 6 M*N* (M*(N+1)*(N-1) + N*(M+1)*(M-1)) M*N M N M*(N+1)*(N-1) + N*(M+1)*(M-1) M*(N+1)*(N-1) M*(N+1) M N+1 N 1 N-1 N 1 N*(M+1)*(M-1) N*(M+1) N M+1 M 1 M-1 M 1 6 ret = disSum * combination(M*N-2, K-2) % MAX ret disSum * combination(M*N-2, K-2) % MAX disSum * combination(M*N-2, K-2) disSum combination(M*N-2, K-2) combination M*N-2 M*N M N 2 K-2 K 2 MAX print if __name__ == '__main__':
    solve() __name__ == '__main__' __name__ '__main__' solve() solve def solve():
    N, M, K = [int(_) for _ in raw_input().split()]
    disSum = M*N* (M*(N+1)*(N-1) + N*(M+1)*(M-1)) / 6
    ret = disSum * combination(M*N-2, K-2) % MAX
    print ret def solve():
    N, M, K = [int(_) for _ in raw_input().split()]
    disSum = M*N* (M*(N+1)*(N-1) + N*(M+1)*(M-1)) / 6
    ret = disSum * combination(M*N-2, K-2) % MAX
    print ret solve def mod_inv(i, mod):
    return pow(i, mod-2, mod) def mod_inv(i, mod):
    return pow(i, mod-2, mod) mod_inv MAX = 10**9 + 7 10**9 + 7 MAX def combination(_N, _K):
    if _K > (_N/2):
        _K = _N - _K
    up = 1
    low = 1
    for i in range (_K):
        up = up * (_N - i) % MAX
        low = low * (i + 1) % MAX
    ret = up * mod_inv(low, MAX) % MAX
    return ret def combination(_N, _K):
    if _K > (_N/2):
        _K = _N - _K
    up = 1
    low = 1
    for i in range (_K):
        up = up * (_N - i) % MAX
        low = low * (i + 1) % MAX
    ret = up * mod_inv(low, MAX) % MAX
    return ret combination

MAX = 10**9 + 7

def mod_inv(i, mod):
    return pow(i, mod-2, mod)

def combination(_N, _K):
    if _K > (_N/2):
        _K = _N - _K
    up = 1
    low = 1
    for i in range (_K):
        up = up * (_N - i) % MAX
        low = low * (i + 1) % MAX
    ret = up * mod_inv(low, MAX) % MAX
    return ret

def solve():
    N, M, K = [int(_) for _ in raw_input().split()]
    disSum = M*N* (M*(N+1)*(N-1) + N*(M+1)*(M-1)) / 6
    ret = disSum * combination(M*N-2, K-2) % MAX
    print ret

if __name__ == '__main__':
    solve()
