import math,string,itertools,fractions,heapq,collections,re,array,bisect,sys,random,time,copy,functools
from collections import deque

sys.setrecursionlimit(10**7)
inf = 10**20
mod = 10**9 + 7

DR = [1, -1, 0, 0]
DC = [0, 0, 1, -1]

def LI(): return [int(x) for x in sys.stdin.readline().split()]
def LI_(): return [int(x)-1 for x in sys.stdin.readline().split()]
def LF(): return [float(x) for x in sys.stdin.readline().split()]
def LS(): return sys.stdin.readline().split()
def I(): return int(sys.stdin.readline())
def F(): return float(sys.stdin.readline())
def S(): return input()
     
# 10 ** 7 might cause MLE
fac = [-1] * (10**6+1)
inv = [-1] * (10**6+1)
finv = [-1] * (10**6+1)

fac[0] = fac[1] = 1
inv[1] = 1
finv[0] = finv[1] = 1

def initNCMMod(limit):
    for i in range(2, limit):
        fac[i] = fac[i-1] * i % mod
        inv[i] = mod - inv[mod%i] * (mod // i) % mod
        finv[i] = finv[i-1] * inv[i] % mod

def NCMMod(n, k):
    if n < k:
        return 0
    if (n < 0 or k < 0):
        return 0
    return fac[n] * (finv[k] * finv[n-k] % mod) % mod
initNCMMod(10**6)

def checkf(R, C):
    ans = 0
    for r1 in range(R):
        for c1 in range(C):
            for r2 in range(R):
                for c2 in range(C):
                    ans += abs(r1-r2) + abs(c1-c2)
    return ans


def main():
    R, C, K = LI()
    def f(i):
        return (i * (i+1) // 2) % mod

    ans = 0
    for i in range(C):
        ans += f(C-i-1) * R * R % mod
        ans += f(i) * R * R % mod

    for i in range(R):
        ans += f(R-i-1) * C * C % mod
        ans += f(i) * C * C % mod
    ans *= inv[2]
    ans %= mod
    ans *= NCMMod(R*C-2, K-2)
    ans %= mod

    print(ans)

main()
 import math,string,itertools,fractions,heapq,collections,re,array,bisect,sys,random,time,copy,functools math string itertools fractions heapq collections re array bisect sys random time copy functools from collections import deque sys.setrecursionlimit(10**7) sys.setrecursionlimit sys setrecursionlimit 10**7 10 7 inf = 10**20 inf 10**20 10 20 mod = 10**9 + 7 mod 10**9 + 7 10**9 10 9 7 DR = [1, -1, 0, 0] DR [1, -1, 0, 0] 1 -1 0 0 DC = [0, 0, 1, -1] DC [0, 0, 1, -1] 0 0 1 -1 int(x) for x in sys.stdin.readline().split() for x in sys.stdin.readline().split() x sys.stdin.readline().split() sys.stdin.readline().split sys.stdin.readline() sys.stdin.readline sys.stdin sys stdin readline split for x in sys.stdin.readline().split() int(x) int x def LI(): return [int(x) for x in sys.stdin.readline().split()] LI int(x)-1 for x in sys.stdin.readline().split() for x in sys.stdin.readline().split() x sys.stdin.readline().split() sys.stdin.readline().split sys.stdin.readline() sys.stdin.readline sys.stdin sys stdin readline split for x in sys.stdin.readline().split() int(x)-1 int(x) int x 1 def LI_(): return [int(x)-1 for x in sys.stdin.readline().split()] LI_ float(x) for x in sys.stdin.readline().split() for x in sys.stdin.readline().split() x sys.stdin.readline().split() sys.stdin.readline().split sys.stdin.readline() sys.stdin.readline sys.stdin sys stdin readline split for x in sys.stdin.readline().split() float(x) float x def LF(): return [float(x) for x in sys.stdin.readline().split()] LF def LS(): return sys.stdin.readline().split() LS def I(): return int(sys.stdin.readline()) I def F(): return float(sys.stdin.readline()) F def S(): return input()
     
# 10 ** 7 might cause MLE S fac = [-1] * (10**6+1) fac [-1] * (10**6+1) [-1] -1 10**6+1 10**6 10 6 1 inv = [-1] * (10**6+1) inv [-1] * (10**6+1) [-1] -1 10**6+1 10**6 10 6 1 finv = [-1] * (10**6+1) finv [-1] * (10**6+1) [-1] -1 10**6+1 10**6 10 6 1 fac[0] = fac[1] = 1 fac[0] fac 0 1 = fac[1] = 1 fac[1] fac 1 1 inv[1] = 1 inv[1] inv 1 1 finv[0] = finv[1] = 1 finv[0] finv 0 1 = finv[1] = 1 finv[1] finv 1 1 def initNCMMod(limit):
    for i in range(2, limit):
        fac[i] = fac[i-1] * i % mod
        inv[i] = mod - inv[mod%i] * (mod // i) % mod
        finv[i] = finv[i-1] * inv[i] % mod initNCMMod for i in range(2, limit):
        fac[i] = fac[i-1] * i % mod
        inv[i] = mod - inv[mod%i] * (mod // i) % mod
        finv[i] = finv[i-1] * inv[i] % mod i range(2, limit) range 2 limit fac[i] = fac[i-1] * i % mod fac[i] fac i fac[i-1] * i % mod fac[i-1] * i fac[i-1] fac i-1 i 1 i mod inv[i] = mod - inv[mod%i] * (mod // i) % mod inv[i] inv i mod - inv[mod%i] * (mod // i) % mod mod inv[mod%i] * (mod // i) % mod inv[mod%i] * (mod // i) inv[mod%i] inv mod%i mod i mod // i mod i mod finv[i] = finv[i-1] * inv[i] % mod finv[i] finv i finv[i-1] * inv[i] % mod finv[i-1] * inv[i] finv[i-1] finv i-1 i 1 inv[i] inv i mod limit limit def NCMMod(n, k):
    if n < k:
        return 0
    if (n < 0 or k < 0):
        return 0
    return fac[n] * (finv[k] * finv[n-k] % mod) % mod NCMMod if n < k:
        return 0
     n < k n k return 0 0 if (n < 0 or k < 0):
        return 0
     n < 0 or k < 0 n < 0 n 0 k < 0 k 0 return 0 0 return fac[n] * (finv[k] * finv[n-k] % mod) % mod fac[n] * (finv[k] * finv[n-k] % mod) % mod fac[n] * (finv[k] * finv[n-k] % mod) fac[n] fac n finv[k] * finv[n-k] % mod finv[k] * finv[n-k] finv[k] finv k finv[n-k] finv n-k n k mod mod n n k k initNCMMod(10**6) initNCMMod 10**6 10 6 def checkf(R, C):
    ans = 0
    for r1 in range(R):
        for c1 in range(C):
            for r2 in range(R):
                for c2 in range(C):
                    ans += abs(r1-r2) + abs(c1-c2)
    return ans checkf ans = 0 ans 0 for r1 in range(R):
        for c1 in range(C):
            for r2 in range(R):
                for c2 in range(C):
                    ans += abs(r1-r2) + abs(c1-c2)
     r1 range(R) range R for c1 in range(C):
            for r2 in range(R):
                for c2 in range(C):
                    ans += abs(r1-r2) + abs(c1-c2)
     c1 range(C) range C for r2 in range(R):
                for c2 in range(C):
                    ans += abs(r1-r2) + abs(c1-c2)
     r2 range(R) range R for c2 in range(C):
                    ans += abs(r1-r2) + abs(c1-c2)
     c2 range(C) range C ans += abs(r1-r2) + abs(c1-c2) ans abs(r1-r2) + abs(c1-c2) abs(r1-r2) abs r1-r2 r1 r2 abs(c1-c2) abs c1-c2 c1 c2 return ans ans R R C C def main():
    R, C, K = LI()
    def f(i):
        return (i * (i+1) // 2) % mod

    ans = 0
    for i in range(C):
        ans += f(C-i-1) * R * R % mod
        ans += f(i) * R * R % mod

    for i in range(R):
        ans += f(R-i-1) * C * C % mod
        ans += f(i) * C * C % mod
    ans *= inv[2]
    ans %= mod
    ans *= NCMMod(R*C-2, K-2)
    ans %= mod

    print(ans) main R, C, K = LI() R LI() LI C K def f(i):
        return (i * (i+1) // 2) % mod

     f return (i * (i+1) // 2) % mod (i * (i+1) // 2) % mod i * (i+1) // 2 i * (i+1) i i+1 i 1 2 mod i i ans = 0 ans 0 for i in range(C):
        ans += f(C-i-1) * R * R % mod
        ans += f(i) * R * R % mod

     i range(C) range C ans += f(C-i-1) * R * R % mod ans f(C-i-1) * R * R % mod f(C-i-1) * R * R f(C-i-1) * R f(C-i-1) f C-i-1 C-i C i 1 R R mod ans += f(i) * R * R % mod ans f(i) * R * R % mod f(i) * R * R f(i) * R f(i) f i R R mod for i in range(R):
        ans += f(R-i-1) * C * C % mod
        ans += f(i) * C * C % mod
     i range(R) range R ans += f(R-i-1) * C * C % mod ans f(R-i-1) * C * C % mod f(R-i-1) * C * C f(R-i-1) * C f(R-i-1) f R-i-1 R-i R i 1 C C mod ans += f(i) * C * C % mod ans f(i) * C * C % mod f(i) * C * C f(i) * C f(i) f i C C mod ans *= inv[2] ans inv[2] inv 2 ans %= mod ans mod ans *= NCMMod(R*C-2, K-2) ans NCMMod(R*C-2, K-2) NCMMod R*C-2 R*C R C 2 K-2 K 2 ans %= mod ans mod print(ans) print ans main() main def LS(): return sys.stdin.readline().split() def LS(): return sys.stdin.readline().split() LS def initNCMMod(limit):
    for i in range(2, limit):
        fac[i] = fac[i-1] * i % mod
        inv[i] = mod - inv[mod%i] * (mod // i) % mod
        finv[i] = finv[i-1] * inv[i] % mod def initNCMMod(limit):
    for i in range(2, limit):
        fac[i] = fac[i-1] * i % mod
        inv[i] = mod - inv[mod%i] * (mod // i) % mod
        finv[i] = finv[i-1] * inv[i] % mod initNCMMod mod = 10**9 + 7 10**9 + 7 mod DC = [0, 0, 1, -1] [0, 0, 1, -1] DC def LI(): return [int(x) for x in sys.stdin.readline().split()] def LI(): return [int(x) for x in sys.stdin.readline().split()] LI def S(): return input()
     
# 10 ** 7 might cause MLE def S(): return input()
     
# 10 ** 7 might cause MLE S def NCMMod(n, k):
    if n < k:
        return 0
    if (n < 0 or k < 0):
        return 0
    return fac[n] * (finv[k] * finv[n-k] % mod) % mod def NCMMod(n, k):
    if n < k:
        return 0
    if (n < 0 or k < 0):
        return 0
    return fac[n] * (finv[k] * finv[n-k] % mod) % mod NCMMod def checkf(R, C):
    ans = 0
    for r1 in range(R):
        for c1 in range(C):
            for r2 in range(R):
                for c2 in range(C):
                    ans += abs(r1-r2) + abs(c1-c2)
    return ans def checkf(R, C):
    ans = 0
    for r1 in range(R):
        for c1 in range(C):
            for r2 in range(R):
                for c2 in range(C):
                    ans += abs(r1-r2) + abs(c1-c2)
    return ans checkf DR = [1, -1, 0, 0] [1, -1, 0, 0] DR def main():
    R, C, K = LI()
    def f(i):
        return (i * (i+1) // 2) % mod

    ans = 0
    for i in range(C):
        ans += f(C-i-1) * R * R % mod
        ans += f(i) * R * R % mod

    for i in range(R):
        ans += f(R-i-1) * C * C % mod
        ans += f(i) * C * C % mod
    ans *= inv[2]
    ans %= mod
    ans *= NCMMod(R*C-2, K-2)
    ans %= mod

    print(ans) def main():
    R, C, K = LI()
    def f(i):
        return (i * (i+1) // 2) % mod

    ans = 0
    for i in range(C):
        ans += f(C-i-1) * R * R % mod
        ans += f(i) * R * R % mod

    for i in range(R):
        ans += f(R-i-1) * C * C % mod
        ans += f(i) * C * C % mod
    ans *= inv[2]
    ans %= mod
    ans *= NCMMod(R*C-2, K-2)
    ans %= mod

    print(ans) main inf = 10**20 10**20 inf def LI_(): return [int(x)-1 for x in sys.stdin.readline().split()] def LI_(): return [int(x)-1 for x in sys.stdin.readline().split()] LI_ def F(): return float(sys.stdin.readline()) def F(): return float(sys.stdin.readline()) F def I(): return int(sys.stdin.readline()) def I(): return int(sys.stdin.readline()) I def LF(): return [float(x) for x in sys.stdin.readline().split()] def LF(): return [float(x) for x in sys.stdin.readline().split()] LF inv = [-1] * (10**6+1) [-1] * (10**6+1) inv fac = [-1] * (10**6+1) [-1] * (10**6+1) fac finv = [-1] * (10**6+1) [-1] * (10**6+1) finv
import math,string,itertools,fractions,heapq,collections,re,array,bisect,sys,random,time,copy,functools
from collections import deque

sys.setrecursionlimit(10**7)
inf = 10**20
mod = 10**9 + 7

DR = [1, -1, 0, 0]
DC = [0, 0, 1, -1]

def LI(): return [int(x) for x in sys.stdin.readline().split()]
def LI_(): return [int(x)-1 for x in sys.stdin.readline().split()]
def LF(): return [float(x) for x in sys.stdin.readline().split()]
def LS(): return sys.stdin.readline().split()
def I(): return int(sys.stdin.readline())
def F(): return float(sys.stdin.readline())
def S(): return input()
     
# 10 ** 7 might cause MLE
fac = [-1] * (10**6+1)
inv = [-1] * (10**6+1)
finv = [-1] * (10**6+1)

fac[0] = fac[1] = 1
inv[1] = 1
finv[0] = finv[1] = 1

def initNCMMod(limit):
    for i in range(2, limit):
        fac[i] = fac[i-1] * i % mod
        inv[i] = mod - inv[mod%i] * (mod // i) % mod
        finv[i] = finv[i-1] * inv[i] % mod

def NCMMod(n, k):
    if n < k:
        return 0
    if (n < 0 or k < 0):
        return 0
    return fac[n] * (finv[k] * finv[n-k] % mod) % mod
initNCMMod(10**6)

def checkf(R, C):
    ans = 0
    for r1 in range(R):
        for c1 in range(C):
            for r2 in range(R):
                for c2 in range(C):
                    ans += abs(r1-r2) + abs(c1-c2)
    return ans


def main():
    R, C, K = LI()
    def f(i):
        return (i * (i+1) // 2) % mod

    ans = 0
    for i in range(C):
        ans += f(C-i-1) * R * R % mod
        ans += f(i) * R * R % mod

    for i in range(R):
        ans += f(R-i-1) * C * C % mod
        ans += f(i) * C * C % mod
    ans *= inv[2]
    ans %= mod
    ans *= NCMMod(R*C-2, K-2)
    ans %= mod

    print(ans)

main()

