class Calc:
    def __init__(self, max_value, mod):
        """combination(max_value, all)"""
        fact = [-1] * (max_value + 1)
        fact[0] = 1
        fact[1] = 1
        for x in range(2, max_value + 1):
            fact[x] = x * fact[x - 1] % mod

        invs = [1] * (max_value + 1)
        invs[max_value] = pow(fact[max_value], mod - 2, mod)
        for x in range(max_value - 1, 0, -1):
            invs[x] = invs[x + 1] * (x + 1) % mod

        self.fact = fact
        self.invs = invs
        self.mod = mod

    def nCr(self, n, r):
        r = min(n - r, r)
        if r < 0: return 0
        if r == 0: return 1
        if r == 1: return n
        return self.fact[n] * self.invs[r] * self.invs[n - r] % self.mod

    def nHr(self, n, r):
        return self.nCr(n - 1 + r, r)


def main():
    MOD = 10 ** 9 + 7

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

    calc = Calc(max_value=N * M - 2, mod=MOD)

    t = 0
    for d in range(1, N):
        t = (t + (N - d) * d) % MOD
    t = t * M * M * calc.nCr(N * M - 2, K - 2) % MOD

    u = 0
    for d in range(1, M):
        u = (u + (M - d) * d) % MOD
    u = u * N * N * calc.nCr(N * M - 2, K - 2) % MOD

    ans = (t + u) % MOD

    print(ans)


if __name__ == '__main__':
    main() class Calc:
    def __init__(self, max_value, mod):
        """combination(max_value, all)"""
        fact = [-1] * (max_value + 1)
        fact[0] = 1
        fact[1] = 1
        for x in range(2, max_value + 1):
            fact[x] = x * fact[x - 1] % mod

        invs = [1] * (max_value + 1)
        invs[max_value] = pow(fact[max_value], mod - 2, mod)
        for x in range(max_value - 1, 0, -1):
            invs[x] = invs[x + 1] * (x + 1) % mod

        self.fact = fact
        self.invs = invs
        self.mod = mod

    def nCr(self, n, r):
        r = min(n - r, r)
        if r < 0: return 0
        if r == 0: return 1
        if r == 1: return n
        return self.fact[n] * self.invs[r] * self.invs[n - r] % self.mod

    def nHr(self, n, r):
        return self.nCr(n - 1 + r, r) Calc def __init__(self, max_value, mod):
        """combination(max_value, all)"""
        fact = [-1] * (max_value + 1)
        fact[0] = 1
        fact[1] = 1
        for x in range(2, max_value + 1):
            fact[x] = x * fact[x - 1] % mod

        invs = [1] * (max_value + 1)
        invs[max_value] = pow(fact[max_value], mod - 2, mod)
        for x in range(max_value - 1, 0, -1):
            invs[x] = invs[x + 1] * (x + 1) % mod

        self.fact = fact
        self.invs = invs
        self.mod = mod

     __init__ """combination(max_value, all)""" fact = [-1] * (max_value + 1) fact [-1] * (max_value + 1) [-1] -1 max_value + 1 max_value 1 fact[0] = 1 fact[0] fact 0 1 fact[1] = 1 fact[1] fact 1 1 for x in range(2, max_value + 1):
            fact[x] = x * fact[x - 1] % mod

         x range(2, max_value + 1) range 2 max_value + 1 max_value 1 fact[x] = x * fact[x - 1] % mod fact[x] fact x x * fact[x - 1] % mod x * fact[x - 1] x fact[x - 1] fact x - 1 x 1 mod invs = [1] * (max_value + 1) invs [1] * (max_value + 1) [1] 1 max_value + 1 max_value 1 invs[max_value] = pow(fact[max_value], mod - 2, mod) invs[max_value] invs max_value pow(fact[max_value], mod - 2, mod) pow fact[max_value] fact max_value mod - 2 mod 2 mod for x in range(max_value - 1, 0, -1):
            invs[x] = invs[x + 1] * (x + 1) % mod

         x range(max_value - 1, 0, -1) range max_value - 1 max_value 1 0 -1 invs[x] = invs[x + 1] * (x + 1) % mod invs[x] invs x invs[x + 1] * (x + 1) % mod invs[x + 1] * (x + 1) invs[x + 1] invs x + 1 x 1 x + 1 x 1 mod self.fact = fact self.fact self fact fact self.invs = invs self.invs self invs invs self.mod = mod self.mod self mod mod self self max_value max_value mod mod def nCr(self, n, r):
        r = min(n - r, r)
        if r < 0: return 0
        if r == 0: return 1
        if r == 1: return n
        return self.fact[n] * self.invs[r] * self.invs[n - r] % self.mod

     nCr r = min(n - r, r) r min(n - r, r) min n - r n r r if r < 0: return 0
         r < 0 r 0 if r == 0: return 1
         r == 0 r 0 if r == 1: return n
         r == 1 r 1 return self.fact[n] * self.invs[r] * self.invs[n - r] % self.mod self.fact[n] * self.invs[r] * self.invs[n - r] % self.mod self.fact[n] * self.invs[r] * self.invs[n - r] self.fact[n] * self.invs[r] self.fact[n] self.fact self fact n self.invs[r] self.invs self invs r self.invs[n - r] self.invs self invs n - r n r self.mod self mod self self n n r r def nHr(self, n, r):
        return self.nCr(n - 1 + r, r) nHr return self.nCr(n - 1 + r, r) self.nCr(n - 1 + r, r) self.nCr self nCr n - 1 + r n - 1 n 1 r r self self n n r r def main():
    MOD = 10 ** 9 + 7

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

    calc = Calc(max_value=N * M - 2, mod=MOD)

    t = 0
    for d in range(1, N):
        t = (t + (N - d) * d) % MOD
    t = t * M * M * calc.nCr(N * M - 2, K - 2) % MOD

    u = 0
    for d in range(1, M):
        u = (u + (M - d) * d) % MOD
    u = u * N * N * calc.nCr(N * M - 2, K - 2) % MOD

    ans = (t + u) % MOD

    print(ans) main MOD = 10 ** 9 + 7 MOD 10 ** 9 + 7 10 ** 9 10 9 7 N, M, K = map(int, input().split()) N map(int, input().split()) map int input().split() ().split () input split M K calc = Calc(max_value=N * M - 2, mod=MOD) calc Calc(max_value=N * M - 2, mod=MOD) Calc max_value=N * M - 2 max_value N * M - 2 N * M N M 2 mod=MOD mod MOD t = 0 t 0 for d in range(1, N):
        t = (t + (N - d) * d) % MOD
     d range(1, N) range 1 N t = (t + (N - d) * d) % MOD t (t + (N - d) * d) % MOD t + (N - d) * d t (N - d) * d N - d N d d MOD t = t * M * M * calc.nCr(N * M - 2, K - 2) % MOD t t * M * M * calc.nCr(N * M - 2, K - 2) % MOD t * M * M * calc.nCr(N * M - 2, K - 2) t * M * M t * M t M M calc.nCr(N * M - 2, K - 2) calc.nCr calc nCr N * M - 2 N * M N M 2 K - 2 K 2 MOD u = 0 u 0 for d in range(1, M):
        u = (u + (M - d) * d) % MOD
     d range(1, M) range 1 M u = (u + (M - d) * d) % MOD u (u + (M - d) * d) % MOD u + (M - d) * d u (M - d) * d M - d M d d MOD u = u * N * N * calc.nCr(N * M - 2, K - 2) % MOD u u * N * N * calc.nCr(N * M - 2, K - 2) % MOD u * N * N * calc.nCr(N * M - 2, K - 2) u * N * N u * N u N N calc.nCr(N * M - 2, K - 2) calc.nCr calc nCr N * M - 2 N * M N M 2 K - 2 K 2 MOD ans = (t + u) % MOD ans (t + u) % MOD t + u t u MOD print(ans) print ans if __name__ == '__main__':
    main() __name__ == '__main__' __name__ '__main__' main() main def main():
    MOD = 10 ** 9 + 7

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

    calc = Calc(max_value=N * M - 2, mod=MOD)

    t = 0
    for d in range(1, N):
        t = (t + (N - d) * d) % MOD
    t = t * M * M * calc.nCr(N * M - 2, K - 2) % MOD

    u = 0
    for d in range(1, M):
        u = (u + (M - d) * d) % MOD
    u = u * N * N * calc.nCr(N * M - 2, K - 2) % MOD

    ans = (t + u) % MOD

    print(ans) def main():
    MOD = 10 ** 9 + 7

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

    calc = Calc(max_value=N * M - 2, mod=MOD)

    t = 0
    for d in range(1, N):
        t = (t + (N - d) * d) % MOD
    t = t * M * M * calc.nCr(N * M - 2, K - 2) % MOD

    u = 0
    for d in range(1, M):
        u = (u + (M - d) * d) % MOD
    u = u * N * N * calc.nCr(N * M - 2, K - 2) % MOD

    ans = (t + u) % MOD

    print(ans) main class Calc:
    def __init__(self, max_value, mod):
        """combination(max_value, all)"""
        fact = [-1] * (max_value + 1)
        fact[0] = 1
        fact[1] = 1
        for x in range(2, max_value + 1):
            fact[x] = x * fact[x - 1] % mod

        invs = [1] * (max_value + 1)
        invs[max_value] = pow(fact[max_value], mod - 2, mod)
        for x in range(max_value - 1, 0, -1):
            invs[x] = invs[x + 1] * (x + 1) % mod

        self.fact = fact
        self.invs = invs
        self.mod = mod

    def nCr(self, n, r):
        r = min(n - r, r)
        if r < 0: return 0
        if r == 0: return 1
        if r == 1: return n
        return self.fact[n] * self.invs[r] * self.invs[n - r] % self.mod

    def nHr(self, n, r):
        return self.nCr(n - 1 + r, r) class Calc:
    def __init__(self, max_value, mod):
        """combination(max_value, all)"""
        fact = [-1] * (max_value + 1)
        fact[0] = 1
        fact[1] = 1
        for x in range(2, max_value + 1):
            fact[x] = x * fact[x - 1] % mod

        invs = [1] * (max_value + 1)
        invs[max_value] = pow(fact[max_value], mod - 2, mod)
        for x in range(max_value - 1, 0, -1):
            invs[x] = invs[x + 1] * (x + 1) % mod

        self.fact = fact
        self.invs = invs
        self.mod = mod

    def nCr(self, n, r):
        r = min(n - r, r)
        if r < 0: return 0
        if r == 0: return 1
        if r == 1: return n
        return self.fact[n] * self.invs[r] * self.invs[n - r] % self.mod

    def nHr(self, n, r):
        return self.nCr(n - 1 + r, r) Calc
class Calc:
    def __init__(self, max_value, mod):
        """combination(max_value, all)"""
        fact = [-1] * (max_value + 1)
        fact[0] = 1
        fact[1] = 1
        for x in range(2, max_value + 1):
            fact[x] = x * fact[x - 1] % mod

        invs = [1] * (max_value + 1)
        invs[max_value] = pow(fact[max_value], mod - 2, mod)
        for x in range(max_value - 1, 0, -1):
            invs[x] = invs[x + 1] * (x + 1) % mod

        self.fact = fact
        self.invs = invs
        self.mod = mod

    def nCr(self, n, r):
        r = min(n - r, r)
        if r < 0: return 0
        if r == 0: return 1
        if r == 1: return n
        return self.fact[n] * self.invs[r] * self.invs[n - r] % self.mod

    def nHr(self, n, r):
        return self.nCr(n - 1 + r, r)


def main():
    MOD = 10 ** 9 + 7

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

    calc = Calc(max_value=N * M - 2, mod=MOD)

    t = 0
    for d in range(1, N):
        t = (t + (N - d) * d) % MOD
    t = t * M * M * calc.nCr(N * M - 2, K - 2) % MOD

    u = 0
    for d in range(1, M):
        u = (u + (M - d) * d) % MOD
    u = u * N * N * calc.nCr(N * M - 2, K - 2) % MOD

    ans = (t + u) % MOD

    print(ans)


if __name__ == '__main__':
    main()
