mod=10**9+7
def inv(x):
    if x==0:
        raise ValueError("Div 0")
    (nowx,lastx) = (0,1)
    (nowy,lasty) = (1,0)
    a=x;b=mod
    while b!=0:
        q=a//b
        (a,b)=(b,a%b)
        (nowx,lastx)=(lastx-q*nowx,nowx)
        (nowy,lasty)=(lasty-q*nowy,nowy)
    return (a*lastx)%mod
N,M,K=map(int,input().split())
X=sum([d*(N-d)*M*M for d in range(N)])
Y=sum([d*(M-d)*N*N for d in range(M)])
ans=X+Y
for i in range(1,K-1):
    ans*=(N*M-1-i)
    ans%=mod
    ans*=inv(i)
    ans%=mod
print(ans) mod=10**9+7 mod 10**9+7 10**9 10 9 7 def inv(x):
    if x==0:
        raise ValueError("Div 0")
    (nowx,lastx) = (0,1)
    (nowy,lasty) = (1,0)
    a=x;b=mod
    while b!=0:
        q=a//b
        (a,b)=(b,a%b)
        (nowx,lastx)=(lastx-q*nowx,nowx)
        (nowy,lasty)=(lasty-q*nowy,nowy)
    return (a*lastx)%mod inv if x==0:
        raise ValueError("Div 0")
     x==0 x 0 raise ValueError("Div 0") ValueError("Div 0") ValueError "Div 0" (nowx,lastx) = (0,1) (nowx,lastx) nowx lastx (0,1) 0 1 (nowy,lasty) = (1,0) (nowy,lasty) nowy lasty (1,0) 1 0 a=x a x b=mod b mod while b!=0:
        q=a//b
        (a,b)=(b,a%b)
        (nowx,lastx)=(lastx-q*nowx,nowx)
        (nowy,lasty)=(lasty-q*nowy,nowy)
     b!=0 b 0 q=a//b q a//b a b (a,b)=(b,a%b) (a,b) a b (b,a%b) b a%b a b (nowx,lastx)=(lastx-q*nowx,nowx) (nowx,lastx) nowx lastx (lastx-q*nowx,nowx) lastx-q*nowx lastx q*nowx q nowx nowx (nowy,lasty)=(lasty-q*nowy,nowy) (nowy,lasty) nowy lasty (lasty-q*nowy,nowy) lasty-q*nowy lasty q*nowy q nowy nowy return (a*lastx)%mod (a*lastx)%mod a*lastx a lastx mod x x N,M,K=map(int,input().split()) N map(int,input().split()) map int input().split() ().split () input split M K d*(N-d)*M*M for d in range(N) for d in range(N) d range(N) range N for d in range(N) d*(N-d)*M*M d*(N-d)*M d*(N-d) d N-d N d M M X=sum([d*(N-d)*M*M for d in range(N)]) X sum([d*(N-d)*M*M for d in range(N)]) sum [d*(N-d)*M*M for d in range(N)] d*(M-d)*N*N for d in range(M) for d in range(M) d range(M) range M for d in range(M) d*(M-d)*N*N d*(M-d)*N d*(M-d) d M-d M d N N Y=sum([d*(M-d)*N*N for d in range(M)]) Y sum([d*(M-d)*N*N for d in range(M)]) sum [d*(M-d)*N*N for d in range(M)] ans=X+Y ans X+Y X Y for i in range(1,K-1):
    ans*=(N*M-1-i)
    ans%=mod
    ans*=inv(i)
    ans%=mod i range(1,K-1) range 1 K-1 K 1 ans*=(N*M-1-i) ans N*M-1-i N*M-1 N*M N M 1 i ans%=mod ans mod ans*=inv(i) ans inv(i) inv i ans%=mod ans mod print(ans) print ans ans*=(N*M-1-i) N*M-1-i ans Y=sum([d*(M-d)*N*N for d in range(M)]) sum([d*(M-d)*N*N for d in range(M)]) Y X=sum([d*(N-d)*M*M for d in range(N)]) sum([d*(N-d)*M*M for d in range(N)]) X N,M,K=map(int,input().split()) map(int,input().split()) N ans*=inv(i) inv(i) ans ans%=mod mod ans def inv(x):
    if x==0:
        raise ValueError("Div 0")
    (nowx,lastx) = (0,1)
    (nowy,lasty) = (1,0)
    a=x;b=mod
    while b!=0:
        q=a//b
        (a,b)=(b,a%b)
        (nowx,lastx)=(lastx-q*nowx,nowx)
        (nowy,lasty)=(lasty-q*nowy,nowy)
    return (a*lastx)%mod def inv(x):
    if x==0:
        raise ValueError("Div 0")
    (nowx,lastx) = (0,1)
    (nowy,lasty) = (1,0)
    a=x;b=mod
    while b!=0:
        q=a//b
        (a,b)=(b,a%b)
        (nowx,lastx)=(lastx-q*nowx,nowx)
        (nowy,lasty)=(lasty-q*nowy,nowy)
    return (a*lastx)%mod inv M,K=map(int,input().split()) map(int,input().split()) M mod=10**9+7 10**9+7 mod K=map(int,input().split()) map(int,input().split()) K ans=X+Y X+Y ans ans%=mod mod ans
mod=10**9+7
def inv(x):
    if x==0:
        raise ValueError("Div 0")
    (nowx,lastx) = (0,1)
    (nowy,lasty) = (1,0)
    a=x;b=mod
    while b!=0:
        q=a//b
        (a,b)=(b,a%b)
        (nowx,lastx)=(lastx-q*nowx,nowx)
        (nowy,lasty)=(lasty-q*nowy,nowy)
    return (a*lastx)%mod
N,M,K=map(int,input().split())
X=sum([d*(N-d)*M*M for d in range(N)])
Y=sum([d*(M-d)*N*N for d in range(M)])
ans=X+Y
for i in range(1,K-1):
    ans*=(N*M-1-i)
    ans%=mod
    ans*=inv(i)
    ans%=mod
print(ans)
