import sys
import itertools
# import numpy as np
import time
import math
import heapq
from collections import defaultdict
from collections import Counter
sys.setrecursionlimit(10 ** 7)
 
INF = 10 ** 18
MOD = 10 ** 9 + 7
read = sys.stdin.buffer.read
readline = sys.stdin.buffer.readline
readlines = sys.stdin.buffer.readlines

# map(int, input().split())

N, M, K = map(int, input().split())
MAX = 2 * 10 ** 5 + 5
MOD = 10 ** 9 + 7

fac = [0 for i in range(MAX)]
finv = [0 for i in range(MAX)]
inv = [0 for i in range(MAX)]

def comInit(mod):
    fac[0], fac[1] = 1, 1
    finv[0], finv[1] = 1, 1
    inv[1] = 1
    for i in range(2, MAX):
        fac[i] = fac[i - 1] * i % mod
        inv[i] = mod - inv[mod % i] * (mod // i) % mod
        finv[i] = finv[i - 1] * inv[i] % mod


def com(n, r, mod):
    if n < r:
        return 0
    if n < 0 or r < 0:
        return 0
    return fac[n] * (finv[r] * finv[n - r] % mod) % mod

def p(n, r, mod):
    return fac[n] * finv[n - r] % mod
comInit(MOD)

xs = 0
for i in range(M):
    xs += i * (M - i)
    xs %= MOD
xs *= N ** 2
ys = 0
for i in range(N):
    ys += i * (N - i)
    ys %= MOD
ys *= M ** 2
ys %= MOD
print(((xs + ys) % MOD) * com(N * M - 2, K - 2, MOD) % MOD) import sys sys import itertools itertools import time time import math math import heapq heapq from collections import defaultdict from collections import Counter 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 read = sys.stdin.buffer.read read sys.stdin.buffer.read sys.stdin.buffer sys.stdin sys stdin buffer read readline = sys.stdin.buffer.readline readline sys.stdin.buffer.readline sys.stdin.buffer sys.stdin sys stdin buffer readline readlines = sys.stdin.buffer.readlines readlines sys.stdin.buffer.readlines sys.stdin.buffer sys.stdin sys stdin buffer readlines N, M, K = map(int, input().split()) N map(int, input().split()) map int input().split() ().split () input split M K MAX = 2 * 10 ** 5 + 5 MAX 2 * 10 ** 5 + 5 2 * 10 ** 5 2 10 ** 5 10 5 5 MOD = 10 ** 9 + 7 MOD 10 ** 9 + 7 10 ** 9 10 9 7 0 for i in range(MAX) for i in range(MAX) i range(MAX) range MAX for i in range(MAX) 0 fac = [0 for i in range(MAX)] fac [0 for i in range(MAX)] 0 for i in range(MAX) for i in range(MAX) i range(MAX) range MAX for i in range(MAX) 0 finv = [0 for i in range(MAX)] finv [0 for i in range(MAX)] 0 for i in range(MAX) for i in range(MAX) i range(MAX) range MAX for i in range(MAX) 0 inv = [0 for i in range(MAX)] inv [0 for i in range(MAX)] def comInit(mod):
    fac[0], fac[1] = 1, 1
    finv[0], finv[1] = 1, 1
    inv[1] = 1
    for i in range(2, MAX):
        fac[i] = fac[i - 1] * i % mod
        inv[i] = mod - inv[mod % i] * (mod // i) % mod
        finv[i] = finv[i - 1] * inv[i] % mod comInit fac[0], fac[1] = 1, 1 fac[0] fac 0 1 fac[1] fac 1 1 finv[0], finv[1] = 1, 1 finv[0] finv 0 1 finv[1] finv 1 1 inv[1] = 1 inv[1] inv 1 1 for i in range(2, MAX):
        fac[i] = fac[i - 1] * i % mod
        inv[i] = mod - inv[mod % i] * (mod // i) % mod
        finv[i] = finv[i - 1] * inv[i] % mod i range(2, MAX) range 2 MAX fac[i] = fac[i - 1] * i % mod fac[i] fac i fac[i - 1] * i % mod fac[i - 1] * i fac[i - 1] fac i - 1 i 1 i mod inv[i] = mod - inv[mod % i] * (mod // i) % mod inv[i] inv i mod - inv[mod % i] * (mod // i) % mod mod inv[mod % i] * (mod // i) % mod inv[mod % i] * (mod // i) inv[mod % i] inv mod % i mod i mod // i mod i mod finv[i] = finv[i - 1] * inv[i] % mod finv[i] finv i finv[i - 1] * inv[i] % mod finv[i - 1] * inv[i] finv[i - 1] finv i - 1 i 1 inv[i] inv i mod mod mod def com(n, r, mod):
    if n < r:
        return 0
    if n < 0 or r < 0:
        return 0
    return fac[n] * (finv[r] * finv[n - r] % mod) % mod com if n < r:
        return 0
     n < r n r return 0 0 if n < 0 or r < 0:
        return 0
     n < 0 or r < 0 n < 0 n 0 r < 0 r 0 return 0 0 return fac[n] * (finv[r] * finv[n - r] % mod) % mod fac[n] * (finv[r] * finv[n - r] % mod) % mod fac[n] * (finv[r] * finv[n - r] % mod) fac[n] fac n finv[r] * finv[n - r] % mod finv[r] * finv[n - r] finv[r] finv r finv[n - r] finv n - r n r mod mod n n r r mod mod def p(n, r, mod):
    return fac[n] * finv[n - r] % mod p return fac[n] * finv[n - r] % mod fac[n] * finv[n - r] % mod fac[n] * finv[n - r] fac[n] fac n finv[n - r] finv n - r n r mod n n r r mod mod comInit(MOD) comInit MOD xs = 0 xs 0 for i in range(M):
    xs += i * (M - i)
    xs %= MOD i range(M) range M xs += i * (M - i) xs i * (M - i) i M - i M i xs %= MOD xs MOD xs *= N ** 2 xs N ** 2 N 2 ys = 0 ys 0 for i in range(N):
    ys += i * (N - i)
    ys %= MOD i range(N) range N ys += i * (N - i) ys i * (N - i) i N - i N i ys %= MOD ys MOD ys *= M ** 2 ys M ** 2 M 2 ys %= MOD ys MOD print(((xs + ys) % MOD) * com(N * M - 2, K - 2, MOD) % MOD) print ((xs + ys) % MOD) * com(N * M - 2, K - 2, MOD) % MOD ((xs + ys) % MOD) * com(N * M - 2, K - 2, MOD) (xs + ys) % MOD xs + ys xs ys MOD com(N * M - 2, K - 2, MOD) com N * M - 2 N * M N M 2 K - 2 K 2 MOD MOD ys = 0 0 ys ys %= MOD MOD ys ys *= M ** 2 M ** 2 ys K = map(int, input().split()) map(int, input().split()) K ys += i * (N - i) i * (N - i) ys INF = 10 ** 18 10 ** 18 INF M, K = map(int, input().split()) map(int, input().split()) M MOD = 10 ** 9 + 7 10 ** 9 + 7 MOD xs %= MOD MOD xs inv = [0 for i in range(MAX)] [0 for i in range(MAX)] inv read = sys.stdin.buffer.read sys.stdin.buffer.read read MOD = 10 ** 9 + 7 10 ** 9 + 7 MOD MAX = 2 * 10 ** 5 + 5 2 * 10 ** 5 + 5 MAX ys %= MOD MOD ys readline = sys.stdin.buffer.readline sys.stdin.buffer.readline readline N, M, K = map(int, input().split()) map(int, input().split()) N def com(n, r, mod):
    if n < r:
        return 0
    if n < 0 or r < 0:
        return 0
    return fac[n] * (finv[r] * finv[n - r] % mod) % mod def com(n, r, mod):
    if n < r:
        return 0
    if n < 0 or r < 0:
        return 0
    return fac[n] * (finv[r] * finv[n - r] % mod) % mod com xs += i * (M - i) i * (M - i) xs def p(n, r, mod):
    return fac[n] * finv[n - r] % mod def p(n, r, mod):
    return fac[n] * finv[n - r] % mod p xs *= N ** 2 N ** 2 xs xs = 0 0 xs def comInit(mod):
    fac[0], fac[1] = 1, 1
    finv[0], finv[1] = 1, 1
    inv[1] = 1
    for i in range(2, MAX):
        fac[i] = fac[i - 1] * i % mod
        inv[i] = mod - inv[mod % i] * (mod // i) % mod
        finv[i] = finv[i - 1] * inv[i] % mod def comInit(mod):
    fac[0], fac[1] = 1, 1
    finv[0], finv[1] = 1, 1
    inv[1] = 1
    for i in range(2, MAX):
        fac[i] = fac[i - 1] * i % mod
        inv[i] = mod - inv[mod % i] * (mod // i) % mod
        finv[i] = finv[i - 1] * inv[i] % mod comInit finv = [0 for i in range(MAX)] [0 for i in range(MAX)] finv readlines = sys.stdin.buffer.readlines sys.stdin.buffer.readlines readlines fac = [0 for i in range(MAX)] [0 for i in range(MAX)] fac
import sys
import itertools
# import numpy as np
import time
import math
import heapq
from collections import defaultdict
from collections import Counter
sys.setrecursionlimit(10 ** 7)
 
INF = 10 ** 18
MOD = 10 ** 9 + 7
read = sys.stdin.buffer.read
readline = sys.stdin.buffer.readline
readlines = sys.stdin.buffer.readlines

# map(int, input().split())

N, M, K = map(int, input().split())
MAX = 2 * 10 ** 5 + 5
MOD = 10 ** 9 + 7

fac = [0 for i in range(MAX)]
finv = [0 for i in range(MAX)]
inv = [0 for i in range(MAX)]

def comInit(mod):
    fac[0], fac[1] = 1, 1
    finv[0], finv[1] = 1, 1
    inv[1] = 1
    for i in range(2, MAX):
        fac[i] = fac[i - 1] * i % mod
        inv[i] = mod - inv[mod % i] * (mod // i) % mod
        finv[i] = finv[i - 1] * inv[i] % mod


def com(n, r, mod):
    if n < r:
        return 0
    if n < 0 or r < 0:
        return 0
    return fac[n] * (finv[r] * finv[n - r] % mod) % mod

def p(n, r, mod):
    return fac[n] * finv[n - r] % mod
comInit(MOD)

xs = 0
for i in range(M):
    xs += i * (M - i)
    xs %= MOD
xs *= N ** 2
ys = 0
for i in range(N):
    ys += i * (N - i)
    ys %= MOD
ys *= M ** 2
ys %= MOD
print(((xs + ys) % MOD) * com(N * M - 2, K - 2, MOD) % MOD)