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

import math

from operator import mul
from functools import reduce
def combinations_count(n, r):
    if n - r < r: r = n - r
    if r == 0: return 1
    if r == 1: return n

    numerator = [n - r + k + 1 for k in range(r)]
    denominator = [k + 1 for k in range(r)]

    for p in range(2,r+1):
        pivot = denominator[p - 1]
        if pivot > 1:
            offset = (n - r) % p
            for k in range(p-1,r,p):
                numerator[k - offset] /= pivot
                denominator[k] /= pivot

    result = 1
    for k in range(r):
        if numerator[k] > 1:
            result *= int(numerator[k])

    return result

ans_x = 0
c = combinations_count(N*M-2, K-2)
#for i in range(1, N+1):
#    ans_x += N*(N+1)//2-i*(i+1)//2-i*(N-i)
    #for j in range(i+1, N+1):
    #    ans_x += j-i
ans_x = (N*N*(N+1) + N*(N+1)*(2*N+1)//6 - (2*N+1)*N*(N+1)//2)//2
ans_x = M*M*ans_x*c

ans_y = 0
c = combinations_count(N*M-2, K-2)
#for i in range(1, M+1):
#    ans_y += M*(M+1)//2-i*(i+1)//2-i*(M-i)
    #for j in range(i+1, M+1):
    #    ans_y += j-i
ans_y = (M*M*(M+1) + M*(M+1)*(2*M+1)//6 - (2*M+1)*M*(M+1)//2)//2
ans_y = N*N*ans_y*c
ans = (ans_x+ans_y)%(10**9+7)
print(ans) N, M, K = map(int, input().split()) N map(int, input().split()) map int input().split() ().split () input split M K import math math from operator import mul from functools import reduce def combinations_count(n, r):
    if n - r < r: r = n - r
    if r == 0: return 1
    if r == 1: return n

    numerator = [n - r + k + 1 for k in range(r)]
    denominator = [k + 1 for k in range(r)]

    for p in range(2,r+1):
        pivot = denominator[p - 1]
        if pivot > 1:
            offset = (n - r) % p
            for k in range(p-1,r,p):
                numerator[k - offset] /= pivot
                denominator[k] /= pivot

    result = 1
    for k in range(r):
        if numerator[k] > 1:
            result *= int(numerator[k])

    return result combinations_count if n - r < r: r = n - r
     n - r < r n - r n r r if r == 0: return 1
     r == 0 r 0 if r == 1: return n

     r == 1 r 1 n - r + k + 1 for k in range(r) for k in range(r) k range(r) range r for k in range(r) n - r + k + 1 n - r + k n - r n r k 1 numerator = [n - r + k + 1 for k in range(r)] numerator [n - r + k + 1 for k in range(r)] k + 1 for k in range(r) for k in range(r) k range(r) range r for k in range(r) k + 1 k 1 denominator = [k + 1 for k in range(r)] denominator [k + 1 for k in range(r)] for p in range(2,r+1):
        pivot = denominator[p - 1]
        if pivot > 1:
            offset = (n - r) % p
            for k in range(p-1,r,p):
                numerator[k - offset] /= pivot
                denominator[k] /= pivot

     p range(2,r+1) range 2 r+1 r 1 pivot = denominator[p - 1] pivot denominator[p - 1] denominator p - 1 p 1 if pivot > 1:
            offset = (n - r) % p
            for k in range(p-1,r,p):
                numerator[k - offset] /= pivot
                denominator[k] /= pivot

     pivot > 1 pivot 1 offset = (n - r) % p offset (n - r) % p n - r n r p for k in range(p-1,r,p):
                numerator[k - offset] /= pivot
                denominator[k] /= pivot

     k range(p-1,r,p) range p-1 p 1 r p numerator[k - offset] /= pivot numerator[k - offset] numerator k - offset k offset pivot denominator[k] /= pivot denominator[k] denominator k pivot result = 1 result 1 for k in range(r):
        if numerator[k] > 1:
            result *= int(numerator[k])

     k range(r) range r if numerator[k] > 1:
            result *= int(numerator[k])

     numerator[k] > 1 numerator[k] numerator k 1 result *= int(numerator[k]) result int(numerator[k]) int numerator[k] numerator k return result result n n r r ans_x = 0 ans_x 0 c = combinations_count(N*M-2, K-2) c combinations_count(N*M-2, K-2) combinations_count N*M-2 N*M N M 2 K-2 K 2 ans_x = (N*N*(N+1) + N*(N+1)*(2*N+1)//6 - (2*N+1)*N*(N+1)//2)//2 ans_x (N*N*(N+1) + N*(N+1)*(2*N+1)//6 - (2*N+1)*N*(N+1)//2)//2 N*N*(N+1) + N*(N+1)*(2*N+1)//6 - (2*N+1)*N*(N+1)//2 N*N*(N+1) + N*(N+1)*(2*N+1)//6 N*N*(N+1) N*N N N N+1 N 1 N*(N+1)*(2*N+1)//6 N*(N+1)*(2*N+1) N*(N+1) N N+1 N 1 2*N+1 2*N 2 N 1 6 (2*N+1)*N*(N+1)//2 (2*N+1)*N*(N+1) (2*N+1)*N 2*N+1 2*N 2 N 1 N N+1 N 1 2 2 ans_x = M*M*ans_x*c ans_x M*M*ans_x*c M*M*ans_x M*M M M ans_x c ans_y = 0 ans_y 0 c = combinations_count(N*M-2, K-2) c combinations_count(N*M-2, K-2) combinations_count N*M-2 N*M N M 2 K-2 K 2 ans_y = (M*M*(M+1) + M*(M+1)*(2*M+1)//6 - (2*M+1)*M*(M+1)//2)//2 ans_y (M*M*(M+1) + M*(M+1)*(2*M+1)//6 - (2*M+1)*M*(M+1)//2)//2 M*M*(M+1) + M*(M+1)*(2*M+1)//6 - (2*M+1)*M*(M+1)//2 M*M*(M+1) + M*(M+1)*(2*M+1)//6 M*M*(M+1) M*M M M M+1 M 1 M*(M+1)*(2*M+1)//6 M*(M+1)*(2*M+1) M*(M+1) M M+1 M 1 2*M+1 2*M 2 M 1 6 (2*M+1)*M*(M+1)//2 (2*M+1)*M*(M+1) (2*M+1)*M 2*M+1 2*M 2 M 1 M M+1 M 1 2 2 ans_y = N*N*ans_y*c ans_y N*N*ans_y*c N*N*ans_y N*N N N ans_y c ans = (ans_x+ans_y)%(10**9+7) ans (ans_x+ans_y)%(10**9+7) ans_x+ans_y ans_x ans_y 10**9+7 10**9 10 9 7 print(ans) print ans ans_x = 0 0 ans_x c = combinations_count(N*M-2, K-2) combinations_count(N*M-2, K-2) c M, K = map(int, input().split()) map(int, input().split()) M ans_y = N*N*ans_y*c N*N*ans_y*c ans_y ans_y = (M*M*(M+1) + M*(M+1)*(2*M+1)//6 - (2*M+1)*M*(M+1)//2)//2 (M*M*(M+1) + M*(M+1)*(2*M+1)//6 - (2*M+1)*M*(M+1)//2)//2 ans_y c = combinations_count(N*M-2, K-2) combinations_count(N*M-2, K-2) c def combinations_count(n, r):
    if n - r < r: r = n - r
    if r == 0: return 1
    if r == 1: return n

    numerator = [n - r + k + 1 for k in range(r)]
    denominator = [k + 1 for k in range(r)]

    for p in range(2,r+1):
        pivot = denominator[p - 1]
        if pivot > 1:
            offset = (n - r) % p
            for k in range(p-1,r,p):
                numerator[k - offset] /= pivot
                denominator[k] /= pivot

    result = 1
    for k in range(r):
        if numerator[k] > 1:
            result *= int(numerator[k])

    return result def combinations_count(n, r):
    if n - r < r: r = n - r
    if r == 0: return 1
    if r == 1: return n

    numerator = [n - r + k + 1 for k in range(r)]
    denominator = [k + 1 for k in range(r)]

    for p in range(2,r+1):
        pivot = denominator[p - 1]
        if pivot > 1:
            offset = (n - r) % p
            for k in range(p-1,r,p):
                numerator[k - offset] /= pivot
                denominator[k] /= pivot

    result = 1
    for k in range(r):
        if numerator[k] > 1:
            result *= int(numerator[k])

    return result combinations_count N, M, K = map(int, input().split()) map(int, input().split()) N ans_x = M*M*ans_x*c M*M*ans_x*c ans_x ans_y = 0 0 ans_y K = map(int, input().split()) map(int, input().split()) K ans = (ans_x+ans_y)%(10**9+7) (ans_x+ans_y)%(10**9+7) ans ans_x = (N*N*(N+1) + N*(N+1)*(2*N+1)//6 - (2*N+1)*N*(N+1)//2)//2 (N*N*(N+1) + N*(N+1)*(2*N+1)//6 - (2*N+1)*N*(N+1)//2)//2 ans_x
N, M, K = map(int, input().split())

import math

from operator import mul
from functools import reduce
def combinations_count(n, r):
    if n - r < r: r = n - r
    if r == 0: return 1
    if r == 1: return n

    numerator = [n - r + k + 1 for k in range(r)]
    denominator = [k + 1 for k in range(r)]

    for p in range(2,r+1):
        pivot = denominator[p - 1]
        if pivot > 1:
            offset = (n - r) % p
            for k in range(p-1,r,p):
                numerator[k - offset] /= pivot
                denominator[k] /= pivot

    result = 1
    for k in range(r):
        if numerator[k] > 1:
            result *= int(numerator[k])

    return result

ans_x = 0
c = combinations_count(N*M-2, K-2)
#for i in range(1, N+1):
#    ans_x += N*(N+1)//2-i*(i+1)//2-i*(N-i)
    #for j in range(i+1, N+1):
    #    ans_x += j-i
ans_x = (N*N*(N+1) + N*(N+1)*(2*N+1)//6 - (2*N+1)*N*(N+1)//2)//2
ans_x = M*M*ans_x*c

ans_y = 0
c = combinations_count(N*M-2, K-2)
#for i in range(1, M+1):
#    ans_y += M*(M+1)//2-i*(i+1)//2-i*(M-i)
    #for j in range(i+1, M+1):
    #    ans_y += j-i
ans_y = (M*M*(M+1) + M*(M+1)*(2*M+1)//6 - (2*M+1)*M*(M+1)//2)//2
ans_y = N*N*ans_y*c
ans = (ans_x+ans_y)%(10**9+7)
print(ans)