import sys
def LI(): return [int(x) for x in sys.stdin.readline().split()]
def II(): return int(sys.stdin.readline())
def LS(): return sys.stdin.readline().split()
sys.setrecursionlimit(10**7)
INF = 10 ** 18
MOD = 10 ** 9 + 7
def LI_(): return [int(x) - 1 for x in sys.stdin.readline().split()]
def LF(): return [float(x) for x in sys.stdin.readline().split()]
def SI(): return input()
YN = lambda b: print('YES') if b else print('NO')
yn = lambda b: print('Yes') if b else print('No')

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

mod = 10**9+7 #出力の制限
N = 2*10**5
g1 = [1, 1] # 元テーブル
g2 = [1, 1] #逆元テーブル
inverse = [0, 1] #逆元テーブル計算用テーブル

for i in range( 2, N + 1 ):
    g1.append( ( g1[-1] * i ) % mod )
    inverse.append( ( -inverse[mod % i] * (mod//i) ) % mod )
    g2.append( (g2[-1] * inverse[-1]) % mod )

def main():
    N, M, K = LI()

    rows = M*M*sum([d * (N-d) for d in range(1, N)])
    cols = N*N*sum([d * (M-d) for d in range(1, M)])
    ans = (rows + cols) * cmb(M*N-2, K-2, MOD) % MOD

    print(ans)

main() import sys sys int(x) for x in sys.stdin.readline().split() for x in sys.stdin.readline().split() x sys.stdin.readline().split() sys.stdin.readline().split sys.stdin.readline() sys.stdin.readline sys.stdin sys stdin readline split for x in sys.stdin.readline().split() int(x) int x def LI(): return [int(x) for x in sys.stdin.readline().split()] LI def II(): return int(sys.stdin.readline()) II def LS(): return sys.stdin.readline().split() LS sys.setrecursionlimit(10**7) sys.setrecursionlimit sys setrecursionlimit 10**7 10 7 INF = 10 ** 18 INF 10 ** 18 10 18 MOD = 10 ** 9 + 7 MOD 10 ** 9 + 7 10 ** 9 10 9 7 int(x) - 1 for x in sys.stdin.readline().split() for x in sys.stdin.readline().split() x sys.stdin.readline().split() sys.stdin.readline().split sys.stdin.readline() sys.stdin.readline sys.stdin sys stdin readline split for x in sys.stdin.readline().split() int(x) - 1 int(x) int x 1 def LI_(): return [int(x) - 1 for x in sys.stdin.readline().split()] LI_ float(x) for x in sys.stdin.readline().split() for x in sys.stdin.readline().split() x sys.stdin.readline().split() sys.stdin.readline().split sys.stdin.readline() sys.stdin.readline sys.stdin sys stdin readline split for x in sys.stdin.readline().split() float(x) float x def LF(): return [float(x) for x in sys.stdin.readline().split()] LF def SI(): return input() SI YN = lambda b: print('YES') if b else print('NO') YN lambda b: print('YES') if b else print('NO') print('YES') if b else print('NO') b print('YES') print 'YES' print('NO') print 'NO' b yn = lambda b: print('Yes') if b else print('No') yn lambda b: print('Yes') if b else print('No') print('Yes') if b else print('No') b print('Yes') print 'Yes' print('No') print 'No' b 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 cmb if ( r<0 or r>n ):
        return 0
     r<0 or r>n r<0 r 0 r>n r n return 0 0 r = min(r, n-r) r min(r, n-r) min r n-r n r return g1[n] * g2[r] * g2[n-r] % mod g1[n] * g2[r] * g2[n-r] % mod g1[n] * g2[r] * g2[n-r] g1[n] * g2[r] g1[n] g1 n g2[r] g2 r g2[n-r] g2 n-r n r mod n n r r mod mod mod = 10**9+7 mod 10**9+7 10**9 10 9 7 N = 2*10**5 N 2*10**5 2 10**5 10 5 g1 = [1, 1] g1 [1, 1] 1 1 g2 = [1, 1] g2 [1, 1] 1 1 inverse = [0, 1] inverse [0, 1] 0 1 for i in range( 2, N + 1 ):
    g1.append( ( g1[-1] * i ) % mod )
    inverse.append( ( -inverse[mod % i] * (mod//i) ) % mod )
    g2.append( (g2[-1] * inverse[-1]) % mod ) i range( 2, N + 1 ) range 2 N + 1 N 1 g1.append( ( g1[-1] * i ) % mod ) g1.append g1 append ( g1[-1] * i ) % mod g1[-1] * i g1[-1] g1 -1 i mod inverse.append( ( -inverse[mod % i] * (mod//i) ) % mod ) inverse.append inverse append ( -inverse[mod % i] * (mod//i) ) % mod -inverse[mod % i] * (mod//i) -inverse[mod % i] inverse[mod % i] inverse mod % i mod i mod//i mod i mod g2.append( (g2[-1] * inverse[-1]) % mod ) g2.append g2 append (g2[-1] * inverse[-1]) % mod g2[-1] * inverse[-1] g2[-1] g2 -1 inverse[-1] inverse -1 mod def main():
    N, M, K = LI()

    rows = M*M*sum([d * (N-d) for d in range(1, N)])
    cols = N*N*sum([d * (M-d) for d in range(1, M)])
    ans = (rows + cols) * cmb(M*N-2, K-2, MOD) % MOD

    print(ans) main N, M, K = LI() N LI() LI M K d * (N-d) for d in range(1, N) for d in range(1, N) d range(1, N) range 1 N for d in range(1, N) d * (N-d) d N-d N d rows = M*M*sum([d * (N-d) for d in range(1, N)]) rows M*M*sum([d * (N-d) for d in range(1, N)]) M*M M M sum([d * (N-d) for d in range(1, N)]) sum [d * (N-d) for d in range(1, N)] d * (M-d) for d in range(1, M) for d in range(1, M) d range(1, M) range 1 M for d in range(1, M) d * (M-d) d M-d M d cols = N*N*sum([d * (M-d) for d in range(1, M)]) cols N*N*sum([d * (M-d) for d in range(1, M)]) N*N N N sum([d * (M-d) for d in range(1, M)]) sum [d * (M-d) for d in range(1, M)] ans = (rows + cols) * cmb(M*N-2, K-2, MOD) % MOD ans (rows + cols) * cmb(M*N-2, K-2, MOD) % MOD (rows + cols) * cmb(M*N-2, K-2, MOD) rows + cols rows cols cmb(M*N-2, K-2, MOD) cmb M*N-2 M*N M N 2 K-2 K 2 MOD MOD print(ans) print ans main() main def LF(): return [float(x) for x in sys.stdin.readline().split()] def LF(): return [float(x) for x in sys.stdin.readline().split()] LF N = 2*10**5 2*10**5 N def LS(): return sys.stdin.readline().split() def LS(): return sys.stdin.readline().split() LS INF = 10 ** 18 10 ** 18 INF MOD = 10 ** 9 + 7 10 ** 9 + 7 MOD def SI(): return input() def SI(): return input() SI 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 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 cmb g2 = [1, 1] [1, 1] g2 mod = 10**9+7 10**9+7 mod def II(): return int(sys.stdin.readline()) def II(): return int(sys.stdin.readline()) II g1 = [1, 1] [1, 1] g1 def LI(): return [int(x) for x in sys.stdin.readline().split()] def LI(): return [int(x) for x in sys.stdin.readline().split()] LI YN = lambda b: print('YES') if b else print('NO') lambda b: print('YES') if b else print('NO') YN inverse = [0, 1] [0, 1] inverse def LI_(): return [int(x) - 1 for x in sys.stdin.readline().split()] def LI_(): return [int(x) - 1 for x in sys.stdin.readline().split()] LI_ def main():
    N, M, K = LI()

    rows = M*M*sum([d * (N-d) for d in range(1, N)])
    cols = N*N*sum([d * (M-d) for d in range(1, M)])
    ans = (rows + cols) * cmb(M*N-2, K-2, MOD) % MOD

    print(ans) def main():
    N, M, K = LI()

    rows = M*M*sum([d * (N-d) for d in range(1, N)])
    cols = N*N*sum([d * (M-d) for d in range(1, M)])
    ans = (rows + cols) * cmb(M*N-2, K-2, MOD) % MOD

    print(ans) main yn = lambda b: print('Yes') if b else print('No') lambda b: print('Yes') if b else print('No') yn
import sys
def LI(): return [int(x) for x in sys.stdin.readline().split()]
def II(): return int(sys.stdin.readline())
def LS(): return sys.stdin.readline().split()
sys.setrecursionlimit(10**7)
INF = 10 ** 18
MOD = 10 ** 9 + 7
def LI_(): return [int(x) - 1 for x in sys.stdin.readline().split()]
def LF(): return [float(x) for x in sys.stdin.readline().split()]
def SI(): return input()
YN = lambda b: print('YES') if b else print('NO')
yn = lambda b: print('Yes') if b else print('No')

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

mod = 10**9+7 #出力の制限
N = 2*10**5
g1 = [1, 1] # 元テーブル
g2 = [1, 1] #逆元テーブル
inverse = [0, 1] #逆元テーブル計算用テーブル

for i in range( 2, N + 1 ):
    g1.append( ( g1[-1] * i ) % mod )
    inverse.append( ( -inverse[mod % i] * (mod//i) ) % mod )
    g2.append( (g2[-1] * inverse[-1]) % mod )

def main():
    N, M, K = LI()

    rows = M*M*sum([d * (N-d) for d in range(1, N)])
    cols = N*N*sum([d * (M-d) for d in range(1, M)])
    ans = (rows + cols) * cmb(M*N-2, K-2, MOD) % MOD

    print(ans)

main()