N, M, K = map(int, input().split())

MOD = 10 ** 9 + 7

def combination(n, m):
    c = 1
    m = min(n-m, m)
    for i in range(m):
        c = c * (n-i) * pow(m-i, MOD-2, MOD) % MOD
    return c

pattern = combination(N*M-2, K-2)

def diff_x_pattern(val):
    ret = 0
    for d in range(1, val):
        ret += ((val - d) * d) % MOD
    return ret

ans = (M * M * diff_x_pattern(N)) % MOD
ans += (N * N * diff_x_pattern(M)) % MOD
print((ans*pattern)%MOD) N, M, K = map(int, input().split()) N map(int, input().split()) map int input().split() ().split () input split M K MOD = 10 ** 9 + 7 MOD 10 ** 9 + 7 10 ** 9 10 9 7 def combination(n, m):
    c = 1
    m = min(n-m, m)
    for i in range(m):
        c = c * (n-i) * pow(m-i, MOD-2, MOD) % MOD
    return c combination c = 1 c 1 m = min(n-m, m) m min(n-m, m) min n-m n m m for i in range(m):
        c = c * (n-i) * pow(m-i, MOD-2, MOD) % MOD
     i range(m) range m c = c * (n-i) * pow(m-i, MOD-2, MOD) % MOD c c * (n-i) * pow(m-i, MOD-2, MOD) % MOD c * (n-i) * pow(m-i, MOD-2, MOD) c * (n-i) c n-i n i pow(m-i, MOD-2, MOD) pow m-i m i MOD-2 MOD 2 MOD MOD return c c n n m m pattern = combination(N*M-2, K-2) pattern combination(N*M-2, K-2) combination N*M-2 N*M N M 2 K-2 K 2 def diff_x_pattern(val):
    ret = 0
    for d in range(1, val):
        ret += ((val - d) * d) % MOD
    return ret diff_x_pattern ret = 0 ret 0 for d in range(1, val):
        ret += ((val - d) * d) % MOD
     d range(1, val) range 1 val ret += ((val - d) * d) % MOD ret ((val - d) * d) % MOD (val - d) * d val - d val d d MOD return ret ret val val ans = (M * M * diff_x_pattern(N)) % MOD ans (M * M * diff_x_pattern(N)) % MOD M * M * diff_x_pattern(N) M * M M M diff_x_pattern(N) diff_x_pattern N MOD ans += (N * N * diff_x_pattern(M)) % MOD ans (N * N * diff_x_pattern(M)) % MOD N * N * diff_x_pattern(M) N * N N N diff_x_pattern(M) diff_x_pattern M MOD print((ans*pattern)%MOD) print (ans*pattern)%MOD ans*pattern ans pattern MOD K = map(int, input().split()) map(int, input().split()) K def diff_x_pattern(val):
    ret = 0
    for d in range(1, val):
        ret += ((val - d) * d) % MOD
    return ret def diff_x_pattern(val):
    ret = 0
    for d in range(1, val):
        ret += ((val - d) * d) % MOD
    return ret diff_x_pattern pattern = combination(N*M-2, K-2) combination(N*M-2, K-2) pattern MOD = 10 ** 9 + 7 10 ** 9 + 7 MOD N, M, K = map(int, input().split()) map(int, input().split()) N ans = (M * M * diff_x_pattern(N)) % MOD (M * M * diff_x_pattern(N)) % MOD ans ans += (N * N * diff_x_pattern(M)) % MOD (N * N * diff_x_pattern(M)) % MOD ans M, K = map(int, input().split()) map(int, input().split()) M def combination(n, m):
    c = 1
    m = min(n-m, m)
    for i in range(m):
        c = c * (n-i) * pow(m-i, MOD-2, MOD) % MOD
    return c def combination(n, m):
    c = 1
    m = min(n-m, m)
    for i in range(m):
        c = c * (n-i) * pow(m-i, MOD-2, MOD) % MOD
    return c combination
N, M, K = map(int, input().split())

MOD = 10 ** 9 + 7

def combination(n, m):
    c = 1
    m = min(n-m, m)
    for i in range(m):
        c = c * (n-i) * pow(m-i, MOD-2, MOD) % MOD
    return c

pattern = combination(N*M-2, K-2)

def diff_x_pattern(val):
    ret = 0
    for d in range(1, val):
        ret += ((val - d) * d) % MOD
    return ret

ans = (M * M * diff_x_pattern(N)) % MOD
ans += (N * N * diff_x_pattern(M)) % MOD
print((ans*pattern)%MOD)
