Problem:
Score : 500 points

Problem Statement

We have a grid of squares with N rows and M columns. Let (i, j) denote the square at the i-th row from the top and j-th column from the left. We will choose K of the squares and put a piece on each of them.

If we place the K pieces on squares (x_1, y_1), (x_2, y_2), ..., and (x_K, y_K), the cost of this arrangement is computed as:

\sum_{i=1}^{K-1} \sum_{j=i+1}^K (|x_i - x_j| + |y_i - y_j|)

Find the sum of the costs of all possible arrangements of the pieces. Since this value can be tremendous, print it modulo 10^9+7.

We consider two arrangements of the pieces different if and only if there is a square that contains a piece in one of the arrangements but not in the other.

Constraints

2 \leq N \times M \leq 2 \times 10^5

2 \leq K \leq N \times M

All values in input are integers.

Input

Input is given from Standard Input in the following format:

N M K

Output

Print the sum of the costs of all possible arrangements of the pieces, modulo 10^9+7.

Sample Input 1

2 2 2

Sample Output 1

8

There are six possible arrangements of the pieces, as follows:

((1,1),(1,2)), with the cost |1-1|+|1-2| = 1

((1,1),(2,1)), with the cost |1-2|+|1-1| = 1

((1,1),(2,2)), with the cost |1-2|+|1-2| = 2

((1,2),(2,1)), with the cost |1-2|+|2-1| = 2

((1,2),(2,2)), with the cost |1-2|+|2-2| = 1

((2,1),(2,2)), with the cost |2-2|+|1-2| = 1

The sum of these costs is 8.

Sample Input 2

4 5 4

Sample Output 2

87210

Sample Input 3

100 100 5000

Sample Output 3

817260251

Be sure to print the sum modulo 10^9+7.

Solution in Python (3.4.3) (judge verdict: Accepted)

def powerf(a, b, md):
    """a^b mod md"""
    if b == 0:
        return 1

    if b % 2 == 0:
        pf2 = powerf(a, b // 2, md)
        return pf2**2 % md
    else:
        return (a * powerf(a, b-1, md)) % md


def comb(n, k, md):
    """nCk mod md"""
    from math import factorial

    if n < 0 or k < 0 or n < k:
        return 0
    if n == 0 and k == 0:
        return 1

    a = factorial(n) % md
    b = factorial(k) % md
    c = factorial(n-k) % md
    return a * powerf(b, md-2, md) * powerf(c, md-2, md) % md


M = 10**9 + 7

n, m, k = list(map(int, input().split()))
ans = 0
for dx in range(1, m):
    ans += dx * (m - dx) * n**2

for dy in range(1, n):
    ans += dy * (n - dy) * m**2

print(ans * comb(n*m-2, k-2, M) % M)