def e_cell_distance(N, M, K, MOD=10**9 + 7):
    class Combination(object):
        """
        組み合わせ
        参考: https://harigami.net/contents?id=5f169f85-5707-4137-87a5-f0068749d9bb
        """
        __slots__ = ["mod", "factorial", "inverse"]

        def __init__(self, max_n: int = 10**6, mod: int = 10**9 + 7):
            fac, inv = [1], []
            fac_append, inv_append = fac.append, inv.append

            for i in range(1, max_n + 1):
                fac_append(fac[-1] * i % mod)

            inv_append(pow(fac[-1], mod - 2, mod))

            for i in range(max_n, 0, -1):
                inv_append(inv[-1] * i % mod)

            self.mod, self.factorial, self.inverse = mod, fac, inv[::-1]

        def combination(self, n, r):
            if r == n or r == 0:
                return 1
            if r > n:
                return 0
            return self.factorial[n] * self.inverse[r] * self.inverse[n - r] % self.mod

    comb = Combination(N * M).combination(N * M - 2, K - 2)
    t1 = sum([d * (M - d) * (N**2) for d in range(1, M)])
    t2 = sum([d * (N - d) * (M**2) for d in range(1, N)])
    t = (t1 + t2) % MOD
    return (comb * t) % MOD

N, M, K = [int(i) for i in input().split()]
print(e_cell_distance(N, M, K)) def e_cell_distance(N, M, K, MOD=10**9 + 7):
    class Combination(object):
        """
        組み合わせ
        参考: https://harigami.net/contents?id=5f169f85-5707-4137-87a5-f0068749d9bb
        """
        __slots__ = ["mod", "factorial", "inverse"]

        def __init__(self, max_n: int = 10**6, mod: int = 10**9 + 7):
            fac, inv = [1], []
            fac_append, inv_append = fac.append, inv.append

            for i in range(1, max_n + 1):
                fac_append(fac[-1] * i % mod)

            inv_append(pow(fac[-1], mod - 2, mod))

            for i in range(max_n, 0, -1):
                inv_append(inv[-1] * i % mod)

            self.mod, self.factorial, self.inverse = mod, fac, inv[::-1]

        def combination(self, n, r):
            if r == n or r == 0:
                return 1
            if r > n:
                return 0
            return self.factorial[n] * self.inverse[r] * self.inverse[n - r] % self.mod

    comb = Combination(N * M).combination(N * M - 2, K - 2)
    t1 = sum([d * (M - d) * (N**2) for d in range(1, M)])
    t2 = sum([d * (N - d) * (M**2) for d in range(1, N)])
    t = (t1 + t2) % MOD
    return (comb * t) % MOD e_cell_distance class Combination(object):
        """
        組み合わせ
        参考: https://harigami.net/contents?id=5f169f85-5707-4137-87a5-f0068749d9bb
        """
        __slots__ = ["mod", "factorial", "inverse"]

        def __init__(self, max_n: int = 10**6, mod: int = 10**9 + 7):
            fac, inv = [1], []
            fac_append, inv_append = fac.append, inv.append

            for i in range(1, max_n + 1):
                fac_append(fac[-1] * i % mod)

            inv_append(pow(fac[-1], mod - 2, mod))

            for i in range(max_n, 0, -1):
                inv_append(inv[-1] * i % mod)

            self.mod, self.factorial, self.inverse = mod, fac, inv[::-1]

        def combination(self, n, r):
            if r == n or r == 0:
                return 1
            if r > n:
                return 0
            return self.factorial[n] * self.inverse[r] * self.inverse[n - r] % self.mod

     Combination """
        組み合わせ
        参考: https://harigami.net/contents?id=5f169f85-5707-4137-87a5-f0068749d9bb
        """ __slots__ = ["mod", "factorial", "inverse"] __slots__ ["mod", "factorial", "inverse"] "mod" "factorial" "inverse" def __init__(self, max_n: int = 10**6, mod: int = 10**9 + 7):
            fac, inv = [1], []
            fac_append, inv_append = fac.append, inv.append

            for i in range(1, max_n + 1):
                fac_append(fac[-1] * i % mod)

            inv_append(pow(fac[-1], mod - 2, mod))

            for i in range(max_n, 0, -1):
                inv_append(inv[-1] * i % mod)

            self.mod, self.factorial, self.inverse = mod, fac, inv[::-1]

         __init__ fac, inv = [1], [] fac [1] 1 inv [] fac_append, inv_append = fac.append, inv.append fac_append fac.append fac append inv_append inv.append inv append for i in range(1, max_n + 1):
                fac_append(fac[-1] * i % mod)

             i range(1, max_n + 1) range 1 max_n + 1 max_n 1 fac_append(fac[-1] * i % mod) fac_append fac[-1] * i % mod fac[-1] * i fac[-1] fac -1 i mod inv_append(pow(fac[-1], mod - 2, mod)) inv_append pow(fac[-1], mod - 2, mod) pow fac[-1] fac -1 mod - 2 mod 2 mod for i in range(max_n, 0, -1):
                inv_append(inv[-1] * i % mod)

             i range(max_n, 0, -1) range max_n 0 -1 inv_append(inv[-1] * i % mod) inv_append inv[-1] * i % mod inv[-1] * i inv[-1] inv -1 i mod self.mod, self.factorial, self.inverse = mod, fac, inv[::-1] self.mod self mod mod self.factorial self factorial fac self.inverse self inverse inv[::-1] inv ::-1 -1 self self max_n: int = 10**6 max_n 10**6 10 6 mod: int = 10**9 + 7 mod 10**9 + 7 10**9 10 9 7 def combination(self, n, r):
            if r == n or r == 0:
                return 1
            if r > n:
                return 0
            return self.factorial[n] * self.inverse[r] * self.inverse[n - r] % self.mod

     combination if r == n or r == 0:
                return 1
             r == n or r == 0 r == n r n r == 0 r 0 return 1 1 if r > n:
                return 0
             r > n r n return 0 0 return self.factorial[n] * self.inverse[r] * self.inverse[n - r] % self.mod self.factorial[n] * self.inverse[r] * self.inverse[n - r] % self.mod self.factorial[n] * self.inverse[r] * self.inverse[n - r] self.factorial[n] * self.inverse[r] self.factorial[n] self.factorial self factorial n self.inverse[r] self.inverse self inverse r self.inverse[n - r] self.inverse self inverse n - r n r self.mod self mod self self n n r r object comb = Combination(N * M).combination(N * M - 2, K - 2) comb Combination(N * M).combination(N * M - 2, K - 2) (N * M).combination (N * M) Combination N * M N M combination N * M - 2 N * M N M 2 K - 2 K 2 d * (M - d) * (N**2) for d in range(1, M) for d in range(1, M) d range(1, M) range 1 M for d in range(1, M) d * (M - d) * (N**2) d * (M - d) d M - d M d N**2 N 2 t1 = sum([d * (M - d) * (N**2) for d in range(1, M)]) t1 sum([d * (M - d) * (N**2) for d in range(1, M)]) sum [d * (M - d) * (N**2) for d in range(1, M)] d * (N - d) * (M**2) for d in range(1, N) for d in range(1, N) d range(1, N) range 1 N for d in range(1, N) d * (N - d) * (M**2) d * (N - d) d N - d N d M**2 M 2 t2 = sum([d * (N - d) * (M**2) for d in range(1, N)]) t2 sum([d * (N - d) * (M**2) for d in range(1, N)]) sum [d * (N - d) * (M**2) for d in range(1, N)] t = (t1 + t2) % MOD t (t1 + t2) % MOD t1 + t2 t1 t2 MOD return (comb * t) % MOD (comb * t) % MOD comb * t comb t MOD N N M M K K MOD=10**9 + 7 MOD 10**9 + 7 10**9 10 9 7 int(i) for i in input().split() for i in input().split() i input().split() ().split () input split for i in input().split() int(i) int i N, M, K = [int(i) for i in input().split()] N [int(i) for i in input().split()] M K print(e_cell_distance(N, M, K)) print e_cell_distance(N, M, K) e_cell_distance N M K K = [int(i) for i in input().split()] [int(i) for i in input().split()] K def e_cell_distance(N, M, K, MOD=10**9 + 7):
    class Combination(object):
        """
        組み合わせ
        参考: https://harigami.net/contents?id=5f169f85-5707-4137-87a5-f0068749d9bb
        """
        __slots__ = ["mod", "factorial", "inverse"]

        def __init__(self, max_n: int = 10**6, mod: int = 10**9 + 7):
            fac, inv = [1], []
            fac_append, inv_append = fac.append, inv.append

            for i in range(1, max_n + 1):
                fac_append(fac[-1] * i % mod)

            inv_append(pow(fac[-1], mod - 2, mod))

            for i in range(max_n, 0, -1):
                inv_append(inv[-1] * i % mod)

            self.mod, self.factorial, self.inverse = mod, fac, inv[::-1]

        def combination(self, n, r):
            if r == n or r == 0:
                return 1
            if r > n:
                return 0
            return self.factorial[n] * self.inverse[r] * self.inverse[n - r] % self.mod

    comb = Combination(N * M).combination(N * M - 2, K - 2)
    t1 = sum([d * (M - d) * (N**2) for d in range(1, M)])
    t2 = sum([d * (N - d) * (M**2) for d in range(1, N)])
    t = (t1 + t2) % MOD
    return (comb * t) % MOD def e_cell_distance(N, M, K, MOD=10**9 + 7):
    class Combination(object):
        """
        組み合わせ
        参考: https://harigami.net/contents?id=5f169f85-5707-4137-87a5-f0068749d9bb
        """
        __slots__ = ["mod", "factorial", "inverse"]

        def __init__(self, max_n: int = 10**6, mod: int = 10**9 + 7):
            fac, inv = [1], []
            fac_append, inv_append = fac.append, inv.append

            for i in range(1, max_n + 1):
                fac_append(fac[-1] * i % mod)

            inv_append(pow(fac[-1], mod - 2, mod))

            for i in range(max_n, 0, -1):
                inv_append(inv[-1] * i % mod)

            self.mod, self.factorial, self.inverse = mod, fac, inv[::-1]

        def combination(self, n, r):
            if r == n or r == 0:
                return 1
            if r > n:
                return 0
            return self.factorial[n] * self.inverse[r] * self.inverse[n - r] % self.mod

    comb = Combination(N * M).combination(N * M - 2, K - 2)
    t1 = sum([d * (M - d) * (N**2) for d in range(1, M)])
    t2 = sum([d * (N - d) * (M**2) for d in range(1, N)])
    t = (t1 + t2) % MOD
    return (comb * t) % MOD e_cell_distance M, K = [int(i) for i in input().split()] [int(i) for i in input().split()] M N, M, K = [int(i) for i in input().split()] [int(i) for i in input().split()] N
def e_cell_distance(N, M, K, MOD=10**9 + 7):
    class Combination(object):
        """
        組み合わせ
        参考: https://harigami.net/contents?id=5f169f85-5707-4137-87a5-f0068749d9bb
        """
        __slots__ = ["mod", "factorial", "inverse"]

        def __init__(self, max_n: int = 10**6, mod: int = 10**9 + 7):
            fac, inv = [1], []
            fac_append, inv_append = fac.append, inv.append

            for i in range(1, max_n + 1):
                fac_append(fac[-1] * i % mod)

            inv_append(pow(fac[-1], mod - 2, mod))

            for i in range(max_n, 0, -1):
                inv_append(inv[-1] * i % mod)

            self.mod, self.factorial, self.inverse = mod, fac, inv[::-1]

        def combination(self, n, r):
            if r == n or r == 0:
                return 1
            if r > n:
                return 0
            return self.factorial[n] * self.inverse[r] * self.inverse[n - r] % self.mod

    comb = Combination(N * M).combination(N * M - 2, K - 2)
    t1 = sum([d * (M - d) * (N**2) for d in range(1, M)])
    t2 = sum([d * (N - d) * (M**2) for d in range(1, N)])
    t = (t1 + t2) % MOD
    return (comb * t) % MOD

N, M, K = [int(i) for i in input().split()]
print(e_cell_distance(N, M, K))