import sys
input = sys.stdin.buffer.readline

#sys.setrecursionlimit(10**9)
#from functools import lru_cache

def RD(): return input().rstrip().decode()
def II(): return int(input())
def FI(): return int(input())
def MI(): return map(int,input().split())
def MF(): return map(float,input().split())
def LI(): return list(map(int,input().split()))
def LF(): return list(map(float,input().split()))
def TI(): return tuple(map(int,input().split()))
# rstrip().decode()


def main():
	n,m,k=MI()
	mod=10**9+7

	ans=0

	cnt=0
	for i in range(1,m):
		cnt+=i*(m-i)
		cnt%=mod

	ans+=cnt*n*n
	ans%=mod

	cnt=0
	for i in range(1,n):
		cnt+=i*(n-i)
		cnt%=mod

	ans+=cnt*m*m
	ans%=mod

	f=[1]
	for i in range(1,n*m+5):
		f.append((f[-1]*i)%mod)

	finv=[]
	for i in f:
		finv.append(pow(i,mod-2,mod))
	#print(finv)

	#print(ans)

	ans*=k*(k-1)

	ans*=f[n*m-2]
	ans%=mod
	#print(ans)


	ans*=finv[n*m-2-(k-2)]
	ans%=mod
	#print(ans)


	ans*=finv[k]
	ans%=mod



	print(ans)






























if __name__ == "__main__":
	main() import sys sys input = sys.stdin.buffer.readline input sys.stdin.buffer.readline sys.stdin.buffer sys.stdin sys stdin buffer readline def RD(): return input().rstrip().decode() RD def II(): return int(input()) II def FI(): return int(input()) FI def MI(): return map(int,input().split()) MI def MF(): return map(float,input().split()) MF def LI(): return list(map(int,input().split())) LI def LF(): return list(map(float,input().split())) LF def TI(): return tuple(map(int,input().split()))
# rstrip().decode() TI def main():
	n,m,k=MI()
	mod=10**9+7

	ans=0

	cnt=0
	for i in range(1,m):
		cnt+=i*(m-i)
		cnt%=mod

	ans+=cnt*n*n
	ans%=mod

	cnt=0
	for i in range(1,n):
		cnt+=i*(n-i)
		cnt%=mod

	ans+=cnt*m*m
	ans%=mod

	f=[1]
	for i in range(1,n*m+5):
		f.append((f[-1]*i)%mod)

	finv=[]
	for i in f:
		finv.append(pow(i,mod-2,mod))
	#print(finv)

	#print(ans)

	ans*=k*(k-1)

	ans*=f[n*m-2]
	ans%=mod
	#print(ans)


	ans*=finv[n*m-2-(k-2)]
	ans%=mod
	#print(ans)


	ans*=finv[k]
	ans%=mod



	print(ans) main n,m,k=MI() n MI() MI m k mod=10**9+7 mod 10**9+7 10**9 10 9 7 ans=0 ans 0 cnt=0 cnt 0 for i in range(1,m):
		cnt+=i*(m-i)
		cnt%=mod

	 i range(1,m) range 1 m cnt+=i*(m-i) cnt i*(m-i) i m-i m i cnt%=mod cnt mod ans+=cnt*n*n ans cnt*n*n cnt*n cnt n n ans%=mod ans mod cnt=0 cnt 0 for i in range(1,n):
		cnt+=i*(n-i)
		cnt%=mod

	 i range(1,n) range 1 n cnt+=i*(n-i) cnt i*(n-i) i n-i n i cnt%=mod cnt mod ans+=cnt*m*m ans cnt*m*m cnt*m cnt m m ans%=mod ans mod f=[1] f [1] 1 for i in range(1,n*m+5):
		f.append((f[-1]*i)%mod)

	 i range(1,n*m+5) range 1 n*m+5 n*m n m 5 f.append((f[-1]*i)%mod) f.append f append (f[-1]*i)%mod f[-1]*i f[-1] f -1 i mod finv=[] finv [] for i in f:
		finv.append(pow(i,mod-2,mod))
	#print(finv)

	#print(ans)

	 i f finv.append(pow(i,mod-2,mod)) finv.append finv append pow(i,mod-2,mod) pow i mod-2 mod 2 mod ans*=k*(k-1) ans k*(k-1) k k-1 k 1 ans*=f[n*m-2] ans f[n*m-2] f n*m-2 n*m n m 2 ans%=mod ans mod ans*=finv[n*m-2-(k-2)] ans finv[n*m-2-(k-2)] finv n*m-2-(k-2) n*m-2 n*m n m 2 k-2 k 2 ans%=mod ans mod ans*=finv[k] ans finv[k] finv k ans%=mod ans mod print(ans) print ans if __name__ == "__main__":
	main() __name__ == "__main__" __name__ "__main__" main() main def MF(): return map(float,input().split()) def MF(): return map(float,input().split()) MF def II(): return int(input()) def II(): return int(input()) II input = sys.stdin.buffer.readline sys.stdin.buffer.readline input def TI(): return tuple(map(int,input().split()))
# rstrip().decode() def TI(): return tuple(map(int,input().split()))
# rstrip().decode() TI def RD(): return input().rstrip().decode() def RD(): return input().rstrip().decode() RD def FI(): return int(input()) def FI(): return int(input()) FI def MI(): return map(int,input().split()) def MI(): return map(int,input().split()) MI def main():
	n,m,k=MI()
	mod=10**9+7

	ans=0

	cnt=0
	for i in range(1,m):
		cnt+=i*(m-i)
		cnt%=mod

	ans+=cnt*n*n
	ans%=mod

	cnt=0
	for i in range(1,n):
		cnt+=i*(n-i)
		cnt%=mod

	ans+=cnt*m*m
	ans%=mod

	f=[1]
	for i in range(1,n*m+5):
		f.append((f[-1]*i)%mod)

	finv=[]
	for i in f:
		finv.append(pow(i,mod-2,mod))
	#print(finv)

	#print(ans)

	ans*=k*(k-1)

	ans*=f[n*m-2]
	ans%=mod
	#print(ans)


	ans*=finv[n*m-2-(k-2)]
	ans%=mod
	#print(ans)


	ans*=finv[k]
	ans%=mod



	print(ans) def main():
	n,m,k=MI()
	mod=10**9+7

	ans=0

	cnt=0
	for i in range(1,m):
		cnt+=i*(m-i)
		cnt%=mod

	ans+=cnt*n*n
	ans%=mod

	cnt=0
	for i in range(1,n):
		cnt+=i*(n-i)
		cnt%=mod

	ans+=cnt*m*m
	ans%=mod

	f=[1]
	for i in range(1,n*m+5):
		f.append((f[-1]*i)%mod)

	finv=[]
	for i in f:
		finv.append(pow(i,mod-2,mod))
	#print(finv)

	#print(ans)

	ans*=k*(k-1)

	ans*=f[n*m-2]
	ans%=mod
	#print(ans)


	ans*=finv[n*m-2-(k-2)]
	ans%=mod
	#print(ans)


	ans*=finv[k]
	ans%=mod



	print(ans) main def LI(): return list(map(int,input().split())) def LI(): return list(map(int,input().split())) LI def LF(): return list(map(float,input().split())) def LF(): return list(map(float,input().split())) LF
import sys
input = sys.stdin.buffer.readline

#sys.setrecursionlimit(10**9)
#from functools import lru_cache

def RD(): return input().rstrip().decode()
def II(): return int(input())
def FI(): return int(input())
def MI(): return map(int,input().split())
def MF(): return map(float,input().split())
def LI(): return list(map(int,input().split()))
def LF(): return list(map(float,input().split()))
def TI(): return tuple(map(int,input().split()))
# rstrip().decode()


def main():
	n,m,k=MI()
	mod=10**9+7

	ans=0

	cnt=0
	for i in range(1,m):
		cnt+=i*(m-i)
		cnt%=mod

	ans+=cnt*n*n
	ans%=mod

	cnt=0
	for i in range(1,n):
		cnt+=i*(n-i)
		cnt%=mod

	ans+=cnt*m*m
	ans%=mod

	f=[1]
	for i in range(1,n*m+5):
		f.append((f[-1]*i)%mod)

	finv=[]
	for i in f:
		finv.append(pow(i,mod-2,mod))
	#print(finv)

	#print(ans)

	ans*=k*(k-1)

	ans*=f[n*m-2]
	ans%=mod
	#print(ans)


	ans*=finv[n*m-2-(k-2)]
	ans%=mod
	#print(ans)


	ans*=finv[k]
	ans%=mod



	print(ans)






























if __name__ == "__main__":
	main()
