import sys
import math
from collections import defaultdict

sys.setrecursionlimit(10**7)
def input():
    return sys.stdin.readline()[:-1]

mod = 10**9 + 7

def I(): return int(input())
def II(): return map(int, input().split())
def III(): return list(map(int, input().split()))
def Line(N,num):
    if N<=0:
        return [[]]*num
    elif num==1:
        return [I() for _ in range(N)]
    else:
        read_all = [tuple(II()) for _ in range(N)]
        return map(list, zip(*read_all))

#################

#a!をmodしつつ求める
def fact(a,M=mod):
    ans = 1
    for i in range(2,a+1):
        ans = ans*i
        ans = ans%M
    return ans

#互いに素なa,bについて、a*x+b*y=1の一つの解[x,y]を出力
def extgcd(a,b):
    r = [1,0,a]
    w = [0,1,b]
    while w[2]!=1:
        q = r[2]//w[2]
        r2 = w
        w2 = [r[0]-q*w[0],r[1]-q*w[1],r[2]-q*w[2]]
        r = r2
        w = w2
    return [w[0],w[1]]


#aの逆元(mod M)を求める（aとMは互いに素）
def mod_inv(a,M=mod):
    x = extgcd(a,M)[0]
    return (M+x%M)%M

N,M,K = II()
ans = 0
for i in range(N):
    x = i*(i+1)//2 + (N-1-i)*(N-i)//2
    for j in range(M):
        ans += M*x + N*(j*(j+1)+(M-1-j)*(M-j))//2
        ans %= mod

ans = ans*fact(N*M-2)*mod_inv(fact(K-2))*mod_inv(fact(N*M-K))*mod_inv(2)
ans %= mod
print(ans) import sys sys import math math from collections import defaultdict sys.setrecursionlimit(10**7) sys.setrecursionlimit sys setrecursionlimit 10**7 10 7 def input():
    return sys.stdin.readline()[:-1] input return sys.stdin.readline()[:-1] sys.stdin.readline()[:-1] sys.stdin.readline() sys.stdin.readline sys.stdin sys stdin readline :-1 -1 mod = 10**9 + 7 mod 10**9 + 7 10**9 10 9 7 def I(): return int(input()) I def II(): return map(int, input().split()) II def III(): return list(map(int, input().split())) III def Line(N,num):
    if N<=0:
        return [[]]*num
    elif num==1:
        return [I() for _ in range(N)]
    else:
        read_all = [tuple(II()) for _ in range(N)]
        return map(list, zip(*read_all))

#################

#a!をmodしつつ求める Line if N<=0:
        return [[]]*num
    elif num==1:
        return [I() for _ in range(N)]
    else:
        read_all = [tuple(II()) for _ in range(N)]
        return map(list, zip(*read_all))

#################

#a!をmodしつつ求める N<=0 N 0 return [[]]*num [[]]*num [[]] [] num elif num==1:
        return [I() for _ in range(N)]
     num==1 num 1 I() for _ in range(N) for _ in range(N) _ range(N) range N for _ in range(N) I() I return [I() for _ in range(N)] [I() for _ in range(N)] tuple(II()) for _ in range(N) for _ in range(N) _ range(N) range N for _ in range(N) tuple(II()) tuple II() II read_all = [tuple(II()) for _ in range(N)] read_all [tuple(II()) for _ in range(N)] return map(list, zip(*read_all)) map(list, zip(*read_all)) map list zip(*read_all) zip *read_all read_all N N num num def fact(a,M=mod):
    ans = 1
    for i in range(2,a+1):
        ans = ans*i
        ans = ans%M
    return ans

#互いに素なa,bについて、a*x+b*y=1の一つの解[x,y]を出力 fact ans = 1 ans 1 for i in range(2,a+1):
        ans = ans*i
        ans = ans%M
     i range(2,a+1) range 2 a+1 a 1 ans = ans*i ans ans*i ans i ans = ans%M ans ans%M ans M return ans ans a a M=mod M mod def extgcd(a,b):
    r = [1,0,a]
    w = [0,1,b]
    while w[2]!=1:
        q = r[2]//w[2]
        r2 = w
        w2 = [r[0]-q*w[0],r[1]-q*w[1],r[2]-q*w[2]]
        r = r2
        w = w2
    return [w[0],w[1]]


#aの逆元(mod M)を求める（aとMは互いに素） extgcd r = [1,0,a] r [1,0,a] 1 0 a w = [0,1,b] w [0,1,b] 0 1 b while w[2]!=1:
        q = r[2]//w[2]
        r2 = w
        w2 = [r[0]-q*w[0],r[1]-q*w[1],r[2]-q*w[2]]
        r = r2
        w = w2
     w[2]!=1 w[2] w 2 1 q = r[2]//w[2] q r[2]//w[2] r[2] r 2 w[2] w 2 r2 = w r2 w w2 = [r[0]-q*w[0],r[1]-q*w[1],r[2]-q*w[2]] w2 [r[0]-q*w[0],r[1]-q*w[1],r[2]-q*w[2]] r[0]-q*w[0] r[0] r 0 q*w[0] q w[0] w 0 r[1]-q*w[1] r[1] r 1 q*w[1] q w[1] w 1 r[2]-q*w[2] r[2] r 2 q*w[2] q w[2] w 2 r = r2 r r2 w = w2 w w2 return [w[0],w[1]] [w[0],w[1]] w[0] w 0 w[1] w 1 a a b b def mod_inv(a,M=mod):
    x = extgcd(a,M)[0]
    return (M+x%M)%M mod_inv x = extgcd(a,M)[0] x extgcd(a,M)[0] (a,M) extgcd a M 0 return (M+x%M)%M (M+x%M)%M M+x%M M x%M x M M a a M=mod M mod N,M,K = II() N II() II M K ans = 0 ans 0 for i in range(N):
    x = i*(i+1)//2 + (N-1-i)*(N-i)//2
    for j in range(M):
        ans += M*x + N*(j*(j+1)+(M-1-j)*(M-j))//2
        ans %= mod i range(N) range N x = i*(i+1)//2 + (N-1-i)*(N-i)//2 x i*(i+1)//2 + (N-1-i)*(N-i)//2 i*(i+1)//2 i*(i+1) i i+1 i 1 2 (N-1-i)*(N-i)//2 (N-1-i)*(N-i) N-1-i N-1 N 1 i N-i N i 2 for j in range(M):
        ans += M*x + N*(j*(j+1)+(M-1-j)*(M-j))//2
        ans %= mod j range(M) range M ans += M*x + N*(j*(j+1)+(M-1-j)*(M-j))//2 ans M*x + N*(j*(j+1)+(M-1-j)*(M-j))//2 M*x M x N*(j*(j+1)+(M-1-j)*(M-j))//2 N*(j*(j+1)+(M-1-j)*(M-j)) N j*(j+1)+(M-1-j)*(M-j) j*(j+1) j j+1 j 1 (M-1-j)*(M-j) M-1-j M-1 M 1 j M-j M j 2 ans %= mod ans mod ans = ans*fact(N*M-2)*mod_inv(fact(K-2))*mod_inv(fact(N*M-K))*mod_inv(2) ans ans*fact(N*M-2)*mod_inv(fact(K-2))*mod_inv(fact(N*M-K))*mod_inv(2) ans*fact(N*M-2)*mod_inv(fact(K-2))*mod_inv(fact(N*M-K)) ans*fact(N*M-2)*mod_inv(fact(K-2)) ans*fact(N*M-2) ans fact(N*M-2) fact N*M-2 N*M N M 2 mod_inv(fact(K-2)) mod_inv fact(K-2) fact K-2 K 2 mod_inv(fact(N*M-K)) mod_inv fact(N*M-K) fact N*M-K N*M N M K mod_inv(2) mod_inv 2 ans %= mod ans mod print(ans) print ans ans %= mod mod ans M,K = II() II() M ans += M*x + N*(j*(j+1)+(M-1-j)*(M-j))//2 M*x + N*(j*(j+1)+(M-1-j)*(M-j))//2 ans ans %= mod mod ans def II(): return map(int, input().split()) def II(): return map(int, input().split()) II def fact(a,M=mod):
    ans = 1
    for i in range(2,a+1):
        ans = ans*i
        ans = ans%M
    return ans

#互いに素なa,bについて、a*x+b*y=1の一つの解[x,y]を出力 def fact(a,M=mod):
    ans = 1
    for i in range(2,a+1):
        ans = ans*i
        ans = ans%M
    return ans

#互いに素なa,bについて、a*x+b*y=1の一つの解[x,y]を出力 fact def mod_inv(a,M=mod):
    x = extgcd(a,M)[0]
    return (M+x%M)%M def mod_inv(a,M=mod):
    x = extgcd(a,M)[0]
    return (M+x%M)%M mod_inv x = i*(i+1)//2 + (N-1-i)*(N-i)//2 i*(i+1)//2 + (N-1-i)*(N-i)//2 x K = II() II() K ans = 0 0 ans def Line(N,num):
    if N<=0:
        return [[]]*num
    elif num==1:
        return [I() for _ in range(N)]
    else:
        read_all = [tuple(II()) for _ in range(N)]
        return map(list, zip(*read_all))

#################

#a!をmodしつつ求める def Line(N,num):
    if N<=0:
        return [[]]*num
    elif num==1:
        return [I() for _ in range(N)]
    else:
        read_all = [tuple(II()) for _ in range(N)]
        return map(list, zip(*read_all))

#################

#a!をmodしつつ求める Line ans = ans*fact(N*M-2)*mod_inv(fact(K-2))*mod_inv(fact(N*M-K))*mod_inv(2) ans*fact(N*M-2)*mod_inv(fact(K-2))*mod_inv(fact(N*M-K))*mod_inv(2) ans def I(): return int(input()) def I(): return int(input()) I def input():
    return sys.stdin.readline()[:-1] def input():
    return sys.stdin.readline()[:-1] input mod = 10**9 + 7 10**9 + 7 mod def extgcd(a,b):
    r = [1,0,a]
    w = [0,1,b]
    while w[2]!=1:
        q = r[2]//w[2]
        r2 = w
        w2 = [r[0]-q*w[0],r[1]-q*w[1],r[2]-q*w[2]]
        r = r2
        w = w2
    return [w[0],w[1]]


#aの逆元(mod M)を求める（aとMは互いに素） def extgcd(a,b):
    r = [1,0,a]
    w = [0,1,b]
    while w[2]!=1:
        q = r[2]//w[2]
        r2 = w
        w2 = [r[0]-q*w[0],r[1]-q*w[1],r[2]-q*w[2]]
        r = r2
        w = w2
    return [w[0],w[1]]


#aの逆元(mod M)を求める（aとMは互いに素） extgcd def III(): return list(map(int, input().split())) def III(): return list(map(int, input().split())) III N,M,K = II() II() N
import sys
import math
from collections import defaultdict

sys.setrecursionlimit(10**7)
def input():
    return sys.stdin.readline()[:-1]

mod = 10**9 + 7

def I(): return int(input())
def II(): return map(int, input().split())
def III(): return list(map(int, input().split()))
def Line(N,num):
    if N<=0:
        return [[]]*num
    elif num==1:
        return [I() for _ in range(N)]
    else:
        read_all = [tuple(II()) for _ in range(N)]
        return map(list, zip(*read_all))

#################

#a!をmodしつつ求める
def fact(a,M=mod):
    ans = 1
    for i in range(2,a+1):
        ans = ans*i
        ans = ans%M
    return ans

#互いに素なa,bについて、a*x+b*y=1の一つの解[x,y]を出力
def extgcd(a,b):
    r = [1,0,a]
    w = [0,1,b]
    while w[2]!=1:
        q = r[2]//w[2]
        r2 = w
        w2 = [r[0]-q*w[0],r[1]-q*w[1],r[2]-q*w[2]]
        r = r2
        w = w2
    return [w[0],w[1]]


#aの逆元(mod M)を求める（aとMは互いに素）
def mod_inv(a,M=mod):
    x = extgcd(a,M)[0]
    return (M+x%M)%M

N,M,K = II()
ans = 0
for i in range(N):
    x = i*(i+1)//2 + (N-1-i)*(N-i)//2
    for j in range(M):
        ans += M*x + N*(j*(j+1)+(M-1-j)*(M-j))//2
        ans %= mod

ans = ans*fact(N*M-2)*mod_inv(fact(K-2))*mod_inv(fact(N*M-K))*mod_inv(2)
ans %= mod
print(ans)