# https://atcoder.jp/contests/abc127/tasks/abc127_e
# 自分の計算画像を参考に
# ポイントは二点
# 1. 通りを決定してからpairwiseの和→pairを先に決定してから条件を満たす通りを加算 というΣの入れ替え
# 2. 二点の全通りの差を加算は無理→二点の差は何回現れるか を加算


class ModInt:
    def __init__(self, x, MOD=10 ** 9 + 7):
        '''
        pypyじゃないと地獄みたいな遅さなので注意
        '''
        self.mod = MOD
        self.x = x % MOD

    def __str__(self):
        return str(self.x)

    __repr__ = __str__

    def __add__(self, other):
        if isinstance(other, ModInt):
            return ModInt(self.x + other.x, self.mod)
        else:
            return ModInt(self.x + other, self.mod)

    def __sub__(self, other):
        if isinstance(other, ModInt):
            return ModInt(self.x - other.x, self.mod)
        else:
            return ModInt(self.x - other, self.mod)

    def __mul__(self, other):
        if isinstance(other, ModInt):
            return ModInt(self.x * other.x, self.mod)
        else:
            return ModInt(self.x * other, self.mod)

    def __truediv__(self, other):
        if isinstance(other, ModInt):
            return ModInt(self.x * pow(other.x, self.mod - 2, self.mod), self.mod)
        else:
            return ModInt(self.x * pow(other, self.mod - 2, self.mod), self.mod)

    def __pow__(self, other):
        if isinstance(other, ModInt):
            return ModInt(pow(self.x, other.x, self.mod), self.mod)
        else:
            return ModInt(pow(self.x, other, self.mod), self.mod)

    __radd__ = __add__

    def __rsub__(self, other):  # 演算の順序が逆
        if isinstance(other, ModInt):
            return ModInt(other.x - self.x, self.mod)
        else:
            return ModInt(other - self.x, self.mod)

    __rmul__ = __mul__

    def __rtruediv__(self, other):
        if isinstance(other, ModInt):
            return ModInt(other.x * pow(self.x, self.mod - 2, self.mod), self.mod)
        else:
            return ModInt(other * pow(self.x, self.mod - 2, self.mod), self.mod)

    def __rpow__(self, other):
        if isinstance(other, ModInt):
            return ModInt(pow(other.x, self.x, self.mod), self.mod)
        else:
            return ModInt(pow(other, self.x, self.mod), self.mod)


def combination(n, r):
    # 上記のModIntを用いた通りの数の実装
    if r > n:
        return 0  # このような通りの数は無いため便宜上こう定義する
    r = min(r, n - r)
    nf = rf = ModInt(1)
    for i in range(r):
        nf = nf * (n - i)
        rf = rf * (i + 1)
    return nf / rf


N, M, K = map(int, input().split())
C = combination(N * M - 2, K - 2)
x_term = ModInt(0)
for dx in range(1, N):
    x_term += (N - dx) * dx
x_term *= M**2

y_term = ModInt(0)
for dy in range(1, M):
    y_term += (M - dy) * dy
y_term *= N**2

print(C * (x_term + y_term)) class ModInt:
    def __init__(self, x, MOD=10 ** 9 + 7):
        '''
        pypyじゃないと地獄みたいな遅さなので注意
        '''
        self.mod = MOD
        self.x = x % MOD

    def __str__(self):
        return str(self.x)

    __repr__ = __str__

    def __add__(self, other):
        if isinstance(other, ModInt):
            return ModInt(self.x + other.x, self.mod)
        else:
            return ModInt(self.x + other, self.mod)

    def __sub__(self, other):
        if isinstance(other, ModInt):
            return ModInt(self.x - other.x, self.mod)
        else:
            return ModInt(self.x - other, self.mod)

    def __mul__(self, other):
        if isinstance(other, ModInt):
            return ModInt(self.x * other.x, self.mod)
        else:
            return ModInt(self.x * other, self.mod)

    def __truediv__(self, other):
        if isinstance(other, ModInt):
            return ModInt(self.x * pow(other.x, self.mod - 2, self.mod), self.mod)
        else:
            return ModInt(self.x * pow(other, self.mod - 2, self.mod), self.mod)

    def __pow__(self, other):
        if isinstance(other, ModInt):
            return ModInt(pow(self.x, other.x, self.mod), self.mod)
        else:
            return ModInt(pow(self.x, other, self.mod), self.mod)

    __radd__ = __add__

    def __rsub__(self, other):  # 演算の順序が逆
        if isinstance(other, ModInt):
            return ModInt(other.x - self.x, self.mod)
        else:
            return ModInt(other - self.x, self.mod)

    __rmul__ = __mul__

    def __rtruediv__(self, other):
        if isinstance(other, ModInt):
            return ModInt(other.x * pow(self.x, self.mod - 2, self.mod), self.mod)
        else:
            return ModInt(other * pow(self.x, self.mod - 2, self.mod), self.mod)

    def __rpow__(self, other):
        if isinstance(other, ModInt):
            return ModInt(pow(other.x, self.x, self.mod), self.mod)
        else:
            return ModInt(pow(other, self.x, self.mod), self.mod) ModInt def __init__(self, x, MOD=10 ** 9 + 7):
        '''
        pypyじゃないと地獄みたいな遅さなので注意
        '''
        self.mod = MOD
        self.x = x % MOD

     __init__ '''
        pypyじゃないと地獄みたいな遅さなので注意
        ''' self.mod = MOD self.mod self mod MOD self.x = x % MOD self.x self x x % MOD x MOD self self x x MOD=10 ** 9 + 7 MOD 10 ** 9 + 7 10 ** 9 10 9 7 def __str__(self):
        return str(self.x)

     __str__ return str(self.x) str(self.x) str self.x self x self self __repr__ = __str__ __repr__ __str__ def __add__(self, other):
        if isinstance(other, ModInt):
            return ModInt(self.x + other.x, self.mod)
        else:
            return ModInt(self.x + other, self.mod)

     __add__ if isinstance(other, ModInt):
            return ModInt(self.x + other.x, self.mod)
        else:
            return ModInt(self.x + other, self.mod)

     isinstance(other, ModInt) isinstance other ModInt return ModInt(self.x + other.x, self.mod) ModInt(self.x + other.x, self.mod) ModInt self.x + other.x self.x self x other.x other x self.mod self mod return ModInt(self.x + other, self.mod) ModInt(self.x + other, self.mod) ModInt self.x + other self.x self x other self.mod self mod self self other other def __sub__(self, other):
        if isinstance(other, ModInt):
            return ModInt(self.x - other.x, self.mod)
        else:
            return ModInt(self.x - other, self.mod)

     __sub__ if isinstance(other, ModInt):
            return ModInt(self.x - other.x, self.mod)
        else:
            return ModInt(self.x - other, self.mod)

     isinstance(other, ModInt) isinstance other ModInt return ModInt(self.x - other.x, self.mod) ModInt(self.x - other.x, self.mod) ModInt self.x - other.x self.x self x other.x other x self.mod self mod return ModInt(self.x - other, self.mod) ModInt(self.x - other, self.mod) ModInt self.x - other self.x self x other self.mod self mod self self other other def __mul__(self, other):
        if isinstance(other, ModInt):
            return ModInt(self.x * other.x, self.mod)
        else:
            return ModInt(self.x * other, self.mod)

     __mul__ if isinstance(other, ModInt):
            return ModInt(self.x * other.x, self.mod)
        else:
            return ModInt(self.x * other, self.mod)

     isinstance(other, ModInt) isinstance other ModInt return ModInt(self.x * other.x, self.mod) ModInt(self.x * other.x, self.mod) ModInt self.x * other.x self.x self x other.x other x self.mod self mod return ModInt(self.x * other, self.mod) ModInt(self.x * other, self.mod) ModInt self.x * other self.x self x other self.mod self mod self self other other def __truediv__(self, other):
        if isinstance(other, ModInt):
            return ModInt(self.x * pow(other.x, self.mod - 2, self.mod), self.mod)
        else:
            return ModInt(self.x * pow(other, self.mod - 2, self.mod), self.mod)

     __truediv__ if isinstance(other, ModInt):
            return ModInt(self.x * pow(other.x, self.mod - 2, self.mod), self.mod)
        else:
            return ModInt(self.x * pow(other, self.mod - 2, self.mod), self.mod)

     isinstance(other, ModInt) isinstance other ModInt return ModInt(self.x * pow(other.x, self.mod - 2, self.mod), self.mod) ModInt(self.x * pow(other.x, self.mod - 2, self.mod), self.mod) ModInt self.x * pow(other.x, self.mod - 2, self.mod) self.x self x pow(other.x, self.mod - 2, self.mod) pow other.x other x self.mod - 2 self.mod self mod 2 self.mod self mod self.mod self mod return ModInt(self.x * pow(other, self.mod - 2, self.mod), self.mod) ModInt(self.x * pow(other, self.mod - 2, self.mod), self.mod) ModInt self.x * pow(other, self.mod - 2, self.mod) self.x self x pow(other, self.mod - 2, self.mod) pow other self.mod - 2 self.mod self mod 2 self.mod self mod self.mod self mod self self other other def __pow__(self, other):
        if isinstance(other, ModInt):
            return ModInt(pow(self.x, other.x, self.mod), self.mod)
        else:
            return ModInt(pow(self.x, other, self.mod), self.mod)

     __pow__ if isinstance(other, ModInt):
            return ModInt(pow(self.x, other.x, self.mod), self.mod)
        else:
            return ModInt(pow(self.x, other, self.mod), self.mod)

     isinstance(other, ModInt) isinstance other ModInt return ModInt(pow(self.x, other.x, self.mod), self.mod) ModInt(pow(self.x, other.x, self.mod), self.mod) ModInt pow(self.x, other.x, self.mod) pow self.x self x other.x other x self.mod self mod self.mod self mod return ModInt(pow(self.x, other, self.mod), self.mod) ModInt(pow(self.x, other, self.mod), self.mod) ModInt pow(self.x, other, self.mod) pow self.x self x other self.mod self mod self.mod self mod self self other other __radd__ = __add__ __radd__ __add__ def __rsub__(self, other):  # 演算の順序が逆
        if isinstance(other, ModInt):
            return ModInt(other.x - self.x, self.mod)
        else:
            return ModInt(other - self.x, self.mod)

     __rsub__ if isinstance(other, ModInt):
            return ModInt(other.x - self.x, self.mod)
        else:
            return ModInt(other - self.x, self.mod)

     isinstance(other, ModInt) isinstance other ModInt return ModInt(other.x - self.x, self.mod) ModInt(other.x - self.x, self.mod) ModInt other.x - self.x other.x other x self.x self x self.mod self mod return ModInt(other - self.x, self.mod) ModInt(other - self.x, self.mod) ModInt other - self.x other self.x self x self.mod self mod self self other other __rmul__ = __mul__ __rmul__ __mul__ def __rtruediv__(self, other):
        if isinstance(other, ModInt):
            return ModInt(other.x * pow(self.x, self.mod - 2, self.mod), self.mod)
        else:
            return ModInt(other * pow(self.x, self.mod - 2, self.mod), self.mod)

     __rtruediv__ if isinstance(other, ModInt):
            return ModInt(other.x * pow(self.x, self.mod - 2, self.mod), self.mod)
        else:
            return ModInt(other * pow(self.x, self.mod - 2, self.mod), self.mod)

     isinstance(other, ModInt) isinstance other ModInt return ModInt(other.x * pow(self.x, self.mod - 2, self.mod), self.mod) ModInt(other.x * pow(self.x, self.mod - 2, self.mod), self.mod) ModInt other.x * pow(self.x, self.mod - 2, self.mod) other.x other x pow(self.x, self.mod - 2, self.mod) pow self.x self x self.mod - 2 self.mod self mod 2 self.mod self mod self.mod self mod return ModInt(other * pow(self.x, self.mod - 2, self.mod), self.mod) ModInt(other * pow(self.x, self.mod - 2, self.mod), self.mod) ModInt other * pow(self.x, self.mod - 2, self.mod) other pow(self.x, self.mod - 2, self.mod) pow self.x self x self.mod - 2 self.mod self mod 2 self.mod self mod self.mod self mod self self other other def __rpow__(self, other):
        if isinstance(other, ModInt):
            return ModInt(pow(other.x, self.x, self.mod), self.mod)
        else:
            return ModInt(pow(other, self.x, self.mod), self.mod) __rpow__ if isinstance(other, ModInt):
            return ModInt(pow(other.x, self.x, self.mod), self.mod)
        else:
            return ModInt(pow(other, self.x, self.mod), self.mod) isinstance(other, ModInt) isinstance other ModInt return ModInt(pow(other.x, self.x, self.mod), self.mod) ModInt(pow(other.x, self.x, self.mod), self.mod) ModInt pow(other.x, self.x, self.mod) pow other.x other x self.x self x self.mod self mod self.mod self mod return ModInt(pow(other, self.x, self.mod), self.mod) ModInt(pow(other, self.x, self.mod), self.mod) ModInt pow(other, self.x, self.mod) pow other self.x self x self.mod self mod self.mod self mod self self other other def combination(n, r):
    # 上記のModIntを用いた通りの数の実装
    if r > n:
        return 0  # このような通りの数は無いため便宜上こう定義する
    r = min(r, n - r)
    nf = rf = ModInt(1)
    for i in range(r):
        nf = nf * (n - i)
        rf = rf * (i + 1)
    return nf / rf combination if r > n:
        return 0  # このような通りの数は無いため便宜上こう定義する
     r > n r n return 0 0 r = min(r, n - r) r min(r, n - r) min r n - r n r nf = rf = ModInt(1) nf ModInt(1) ModInt 1 = rf = ModInt(1) rf ModInt(1) for i in range(r):
        nf = nf * (n - i)
        rf = rf * (i + 1)
     i range(r) range r nf = nf * (n - i) nf nf * (n - i) nf n - i n i rf = rf * (i + 1) rf rf * (i + 1) rf i + 1 i 1 return nf / rf nf / rf nf rf n n r r N, M, K = map(int, input().split()) N map(int, input().split()) map int input().split() ().split () input split M K C = combination(N * M - 2, K - 2) C combination(N * M - 2, K - 2) combination N * M - 2 N * M N M 2 K - 2 K 2 x_term = ModInt(0) x_term ModInt(0) ModInt 0 for dx in range(1, N):
    x_term += (N - dx) * dx dx range(1, N) range 1 N x_term += (N - dx) * dx x_term (N - dx) * dx N - dx N dx dx x_term *= M**2 x_term M**2 M 2 y_term = ModInt(0) y_term ModInt(0) ModInt 0 for dy in range(1, M):
    y_term += (M - dy) * dy dy range(1, M) range 1 M y_term += (M - dy) * dy y_term (M - dy) * dy M - dy M dy dy y_term *= N**2 y_term N**2 N 2 print(C * (x_term + y_term)) print C * (x_term + y_term) C x_term + y_term x_term y_term M, K = map(int, input().split()) map(int, input().split()) M class ModInt:
    def __init__(self, x, MOD=10 ** 9 + 7):
        '''
        pypyじゃないと地獄みたいな遅さなので注意
        '''
        self.mod = MOD
        self.x = x % MOD

    def __str__(self):
        return str(self.x)

    __repr__ = __str__

    def __add__(self, other):
        if isinstance(other, ModInt):
            return ModInt(self.x + other.x, self.mod)
        else:
            return ModInt(self.x + other, self.mod)

    def __sub__(self, other):
        if isinstance(other, ModInt):
            return ModInt(self.x - other.x, self.mod)
        else:
            return ModInt(self.x - other, self.mod)

    def __mul__(self, other):
        if isinstance(other, ModInt):
            return ModInt(self.x * other.x, self.mod)
        else:
            return ModInt(self.x * other, self.mod)

    def __truediv__(self, other):
        if isinstance(other, ModInt):
            return ModInt(self.x * pow(other.x, self.mod - 2, self.mod), self.mod)
        else:
            return ModInt(self.x * pow(other, self.mod - 2, self.mod), self.mod)

    def __pow__(self, other):
        if isinstance(other, ModInt):
            return ModInt(pow(self.x, other.x, self.mod), self.mod)
        else:
            return ModInt(pow(self.x, other, self.mod), self.mod)

    __radd__ = __add__

    def __rsub__(self, other):  # 演算の順序が逆
        if isinstance(other, ModInt):
            return ModInt(other.x - self.x, self.mod)
        else:
            return ModInt(other - self.x, self.mod)

    __rmul__ = __mul__

    def __rtruediv__(self, other):
        if isinstance(other, ModInt):
            return ModInt(other.x * pow(self.x, self.mod - 2, self.mod), self.mod)
        else:
            return ModInt(other * pow(self.x, self.mod - 2, self.mod), self.mod)

    def __rpow__(self, other):
        if isinstance(other, ModInt):
            return ModInt(pow(other.x, self.x, self.mod), self.mod)
        else:
            return ModInt(pow(other, self.x, self.mod), self.mod) class ModInt:
    def __init__(self, x, MOD=10 ** 9 + 7):
        '''
        pypyじゃないと地獄みたいな遅さなので注意
        '''
        self.mod = MOD
        self.x = x % MOD

    def __str__(self):
        return str(self.x)

    __repr__ = __str__

    def __add__(self, other):
        if isinstance(other, ModInt):
            return ModInt(self.x + other.x, self.mod)
        else:
            return ModInt(self.x + other, self.mod)

    def __sub__(self, other):
        if isinstance(other, ModInt):
            return ModInt(self.x - other.x, self.mod)
        else:
            return ModInt(self.x - other, self.mod)

    def __mul__(self, other):
        if isinstance(other, ModInt):
            return ModInt(self.x * other.x, self.mod)
        else:
            return ModInt(self.x * other, self.mod)

    def __truediv__(self, other):
        if isinstance(other, ModInt):
            return ModInt(self.x * pow(other.x, self.mod - 2, self.mod), self.mod)
        else:
            return ModInt(self.x * pow(other, self.mod - 2, self.mod), self.mod)

    def __pow__(self, other):
        if isinstance(other, ModInt):
            return ModInt(pow(self.x, other.x, self.mod), self.mod)
        else:
            return ModInt(pow(self.x, other, self.mod), self.mod)

    __radd__ = __add__

    def __rsub__(self, other):  # 演算の順序が逆
        if isinstance(other, ModInt):
            return ModInt(other.x - self.x, self.mod)
        else:
            return ModInt(other - self.x, self.mod)

    __rmul__ = __mul__

    def __rtruediv__(self, other):
        if isinstance(other, ModInt):
            return ModInt(other.x * pow(self.x, self.mod - 2, self.mod), self.mod)
        else:
            return ModInt(other * pow(self.x, self.mod - 2, self.mod), self.mod)

    def __rpow__(self, other):
        if isinstance(other, ModInt):
            return ModInt(pow(other.x, self.x, self.mod), self.mod)
        else:
            return ModInt(pow(other, self.x, self.mod), self.mod) ModInt x_term = ModInt(0) ModInt(0) x_term y_term += (M - dy) * dy (M - dy) * dy y_term x_term += (N - dx) * dx (N - dx) * dx x_term y_term *= N**2 N**2 y_term x_term *= M**2 M**2 x_term def combination(n, r):
    # 上記のModIntを用いた通りの数の実装
    if r > n:
        return 0  # このような通りの数は無いため便宜上こう定義する
    r = min(r, n - r)
    nf = rf = ModInt(1)
    for i in range(r):
        nf = nf * (n - i)
        rf = rf * (i + 1)
    return nf / rf def combination(n, r):
    # 上記のModIntを用いた通りの数の実装
    if r > n:
        return 0  # このような通りの数は無いため便宜上こう定義する
    r = min(r, n - r)
    nf = rf = ModInt(1)
    for i in range(r):
        nf = nf * (n - i)
        rf = rf * (i + 1)
    return nf / rf combination K = map(int, input().split()) map(int, input().split()) K C = combination(N * M - 2, K - 2) combination(N * M - 2, K - 2) C N, M, K = map(int, input().split()) map(int, input().split()) N y_term = ModInt(0) ModInt(0) y_term
# https://atcoder.jp/contests/abc127/tasks/abc127_e
# 自分の計算画像を参考に
# ポイントは二点
# 1. 通りを決定してからpairwiseの和→pairを先に決定してから条件を満たす通りを加算 というΣの入れ替え
# 2. 二点の全通りの差を加算は無理→二点の差は何回現れるか を加算


class ModInt:
    def __init__(self, x, MOD=10 ** 9 + 7):
        '''
        pypyじゃないと地獄みたいな遅さなので注意
        '''
        self.mod = MOD
        self.x = x % MOD

    def __str__(self):
        return str(self.x)

    __repr__ = __str__

    def __add__(self, other):
        if isinstance(other, ModInt):
            return ModInt(self.x + other.x, self.mod)
        else:
            return ModInt(self.x + other, self.mod)

    def __sub__(self, other):
        if isinstance(other, ModInt):
            return ModInt(self.x - other.x, self.mod)
        else:
            return ModInt(self.x - other, self.mod)

    def __mul__(self, other):
        if isinstance(other, ModInt):
            return ModInt(self.x * other.x, self.mod)
        else:
            return ModInt(self.x * other, self.mod)

    def __truediv__(self, other):
        if isinstance(other, ModInt):
            return ModInt(self.x * pow(other.x, self.mod - 2, self.mod), self.mod)
        else:
            return ModInt(self.x * pow(other, self.mod - 2, self.mod), self.mod)

    def __pow__(self, other):
        if isinstance(other, ModInt):
            return ModInt(pow(self.x, other.x, self.mod), self.mod)
        else:
            return ModInt(pow(self.x, other, self.mod), self.mod)

    __radd__ = __add__

    def __rsub__(self, other):  # 演算の順序が逆
        if isinstance(other, ModInt):
            return ModInt(other.x - self.x, self.mod)
        else:
            return ModInt(other - self.x, self.mod)

    __rmul__ = __mul__

    def __rtruediv__(self, other):
        if isinstance(other, ModInt):
            return ModInt(other.x * pow(self.x, self.mod - 2, self.mod), self.mod)
        else:
            return ModInt(other * pow(self.x, self.mod - 2, self.mod), self.mod)

    def __rpow__(self, other):
        if isinstance(other, ModInt):
            return ModInt(pow(other.x, self.x, self.mod), self.mod)
        else:
            return ModInt(pow(other, self.x, self.mod), self.mod)


def combination(n, r):
    # 上記のModIntを用いた通りの数の実装
    if r > n:
        return 0  # このような通りの数は無いため便宜上こう定義する
    r = min(r, n - r)
    nf = rf = ModInt(1)
    for i in range(r):
        nf = nf * (n - i)
        rf = rf * (i + 1)
    return nf / rf


N, M, K = map(int, input().split())
C = combination(N * M - 2, K - 2)
x_term = ModInt(0)
for dx in range(1, N):
    x_term += (N - dx) * dx
x_term *= M**2

y_term = ModInt(0)
for dy in range(1, M):
    y_term += (M - dy) * dy
y_term *= N**2

print(C * (x_term + y_term))
