

class Cmber:
    def __init__(self,gensize,mod=10**9+7):
        self.mod = mod
        self.g1=[1,1]
        self.g2 = [1, 1] #逆元テーブル
        self.inverse = [0, 1] #逆元テーブル計算用テーブル
        self.getgen(gensize)
    def getgen(self,N):
        for i in range( 2, N + 1 ):
            self.g1.append( ( self.g1[-1] * i ) % self.mod )
            self.inverse.append( ( -self.inverse[self.mod % i] * (self.mod//i) ) % self.mod )
            self.g2.append( (self.g2[-1] * self.inverse[-1]) % self.mod )
 
    def cmb(self,n, r):
        if ( r<0 or r>n ):
            return 0
        r = min(r, n-r)
        return self.g1[n] * self.g2[r] * self.g2[n-r] % self.mod
 
    def cmb_very_high_n(self,n, r):
        if ( r<0 or r>n ):
            return 0
        g1=1
        r = min(r, n-r)
        for i in range(n-r+1,n+1):
            g1*=i
            g1%=self.mod
        return g1 * self.g2[r] % self.mod

    def multiple_cmb(self,vals):
        ans = self.g1[sum(vals)] % self.mod
        for i in vals:
            ans = (ans*self.g2[i])%self.mod
        return ans










def resolve():
    N,M,K = map(int,input().split())
    cmber = Cmber(N*M)
    score = 0
    for dist in range(1,N):
        cmb_of_2 = dist*(((((N-dist)*M)%cmber.mod)*M)% cmber.mod) % cmber.mod

        score = (score+(cmb_of_2*cmber.cmb(N*M-2,K-2))%cmber.mod)%cmber.mod
        
    for dist in range(1,M):
        cmb_of_2 = dist*(((((M-dist)*N)%cmber.mod)*N)% cmber.mod) % cmber.mod

        score = (score+(cmb_of_2*cmber.cmb(N*M-2,K-2))%cmber.mod)%cmber.mod

    print(score)

if __name__ == "__main__":
    resolve() class Cmber:
    def __init__(self,gensize,mod=10**9+7):
        self.mod = mod
        self.g1=[1,1]
        self.g2 = [1, 1] #逆元テーブル
        self.inverse = [0, 1] #逆元テーブル計算用テーブル
        self.getgen(gensize)
    def getgen(self,N):
        for i in range( 2, N + 1 ):
            self.g1.append( ( self.g1[-1] * i ) % self.mod )
            self.inverse.append( ( -self.inverse[self.mod % i] * (self.mod//i) ) % self.mod )
            self.g2.append( (self.g2[-1] * self.inverse[-1]) % self.mod )
 
    def cmb(self,n, r):
        if ( r<0 or r>n ):
            return 0
        r = min(r, n-r)
        return self.g1[n] * self.g2[r] * self.g2[n-r] % self.mod
 
    def cmb_very_high_n(self,n, r):
        if ( r<0 or r>n ):
            return 0
        g1=1
        r = min(r, n-r)
        for i in range(n-r+1,n+1):
            g1*=i
            g1%=self.mod
        return g1 * self.g2[r] % self.mod

    def multiple_cmb(self,vals):
        ans = self.g1[sum(vals)] % self.mod
        for i in vals:
            ans = (ans*self.g2[i])%self.mod
        return ans Cmber def __init__(self,gensize,mod=10**9+7):
        self.mod = mod
        self.g1=[1,1]
        self.g2 = [1, 1] #逆元テーブル
        self.inverse = [0, 1] #逆元テーブル計算用テーブル
        self.getgen(gensize)
     __init__ self.mod = mod self.mod self mod mod self.g1=[1,1] self.g1 self g1 [1,1] 1 1 self.g2 = [1, 1] self.g2 self g2 [1, 1] 1 1 self.inverse = [0, 1] self.inverse self inverse [0, 1] 0 1 self.getgen(gensize) self.getgen self getgen gensize self self gensize gensize mod=10**9+7 mod 10**9+7 10**9 10 9 7 def getgen(self,N):
        for i in range( 2, N + 1 ):
            self.g1.append( ( self.g1[-1] * i ) % self.mod )
            self.inverse.append( ( -self.inverse[self.mod % i] * (self.mod//i) ) % self.mod )
            self.g2.append( (self.g2[-1] * self.inverse[-1]) % self.mod )
 
     getgen for i in range( 2, N + 1 ):
            self.g1.append( ( self.g1[-1] * i ) % self.mod )
            self.inverse.append( ( -self.inverse[self.mod % i] * (self.mod//i) ) % self.mod )
            self.g2.append( (self.g2[-1] * self.inverse[-1]) % self.mod )
 
     i range( 2, N + 1 ) range 2 N + 1 N 1 self.g1.append( ( self.g1[-1] * i ) % self.mod ) self.g1.append self.g1 self g1 append ( self.g1[-1] * i ) % self.mod self.g1[-1] * i self.g1[-1] self.g1 self g1 -1 i self.mod self mod self.inverse.append( ( -self.inverse[self.mod % i] * (self.mod//i) ) % self.mod ) self.inverse.append self.inverse self inverse append ( -self.inverse[self.mod % i] * (self.mod//i) ) % self.mod -self.inverse[self.mod % i] * (self.mod//i) -self.inverse[self.mod % i] self.inverse[self.mod % i] self.inverse self inverse self.mod % i self.mod self mod i self.mod//i self.mod self mod i self.mod self mod self.g2.append( (self.g2[-1] * self.inverse[-1]) % self.mod ) self.g2.append self.g2 self g2 append (self.g2[-1] * self.inverse[-1]) % self.mod self.g2[-1] * self.inverse[-1] self.g2[-1] self.g2 self g2 -1 self.inverse[-1] self.inverse self inverse -1 self.mod self mod self self N N def cmb(self,n, r):
        if ( r<0 or r>n ):
            return 0
        r = min(r, n-r)
        return self.g1[n] * self.g2[r] * self.g2[n-r] % self.mod
 
     cmb if ( r<0 or r>n ):
            return 0
         r<0 or r>n r<0 r 0 r>n r n return 0 0 r = min(r, n-r) r min(r, n-r) min r n-r n r return self.g1[n] * self.g2[r] * self.g2[n-r] % self.mod self.g1[n] * self.g2[r] * self.g2[n-r] % self.mod self.g1[n] * self.g2[r] * self.g2[n-r] self.g1[n] * self.g2[r] self.g1[n] self.g1 self g1 n self.g2[r] self.g2 self g2 r self.g2[n-r] self.g2 self g2 n-r n r self.mod self mod self self n n r r def cmb_very_high_n(self,n, r):
        if ( r<0 or r>n ):
            return 0
        g1=1
        r = min(r, n-r)
        for i in range(n-r+1,n+1):
            g1*=i
            g1%=self.mod
        return g1 * self.g2[r] % self.mod

     cmb_very_high_n if ( r<0 or r>n ):
            return 0
         r<0 or r>n r<0 r 0 r>n r n return 0 0 g1=1 g1 1 r = min(r, n-r) r min(r, n-r) min r n-r n r for i in range(n-r+1,n+1):
            g1*=i
            g1%=self.mod
         i range(n-r+1,n+1) range n-r+1 n-r n r 1 n+1 n 1 g1*=i g1 i g1%=self.mod g1 self.mod self mod return g1 * self.g2[r] % self.mod g1 * self.g2[r] % self.mod g1 * self.g2[r] g1 self.g2[r] self.g2 self g2 r self.mod self mod self self n n r r def multiple_cmb(self,vals):
        ans = self.g1[sum(vals)] % self.mod
        for i in vals:
            ans = (ans*self.g2[i])%self.mod
        return ans multiple_cmb ans = self.g1[sum(vals)] % self.mod ans self.g1[sum(vals)] % self.mod self.g1[sum(vals)] self.g1 self g1 sum(vals) sum vals self.mod self mod for i in vals:
            ans = (ans*self.g2[i])%self.mod
         i vals ans = (ans*self.g2[i])%self.mod ans (ans*self.g2[i])%self.mod ans*self.g2[i] ans self.g2[i] self.g2 self g2 i self.mod self mod return ans ans self self vals vals def resolve():
    N,M,K = map(int,input().split())
    cmber = Cmber(N*M)
    score = 0
    for dist in range(1,N):
        cmb_of_2 = dist*(((((N-dist)*M)%cmber.mod)*M)% cmber.mod) % cmber.mod

        score = (score+(cmb_of_2*cmber.cmb(N*M-2,K-2))%cmber.mod)%cmber.mod
        
    for dist in range(1,M):
        cmb_of_2 = dist*(((((M-dist)*N)%cmber.mod)*N)% cmber.mod) % cmber.mod

        score = (score+(cmb_of_2*cmber.cmb(N*M-2,K-2))%cmber.mod)%cmber.mod

    print(score) resolve N,M,K = map(int,input().split()) N map(int,input().split()) map int input().split() ().split () input split M K cmber = Cmber(N*M) cmber Cmber(N*M) Cmber N*M N M score = 0 score 0 for dist in range(1,N):
        cmb_of_2 = dist*(((((N-dist)*M)%cmber.mod)*M)% cmber.mod) % cmber.mod

        score = (score+(cmb_of_2*cmber.cmb(N*M-2,K-2))%cmber.mod)%cmber.mod
        
     dist range(1,N) range 1 N cmb_of_2 = dist*(((((N-dist)*M)%cmber.mod)*M)% cmber.mod) % cmber.mod cmb_of_2 dist*(((((N-dist)*M)%cmber.mod)*M)% cmber.mod) % cmber.mod dist*(((((N-dist)*M)%cmber.mod)*M)% cmber.mod) dist ((((N-dist)*M)%cmber.mod)*M)% cmber.mod (((N-dist)*M)%cmber.mod)*M ((N-dist)*M)%cmber.mod (N-dist)*M N-dist N dist M cmber.mod cmber mod M cmber.mod cmber mod cmber.mod cmber mod score = (score+(cmb_of_2*cmber.cmb(N*M-2,K-2))%cmber.mod)%cmber.mod score (score+(cmb_of_2*cmber.cmb(N*M-2,K-2))%cmber.mod)%cmber.mod score+(cmb_of_2*cmber.cmb(N*M-2,K-2))%cmber.mod score (cmb_of_2*cmber.cmb(N*M-2,K-2))%cmber.mod cmb_of_2*cmber.cmb(N*M-2,K-2) cmb_of_2 cmber.cmb(N*M-2,K-2) cmber.cmb cmber cmb N*M-2 N*M N M 2 K-2 K 2 cmber.mod cmber mod cmber.mod cmber mod for dist in range(1,M):
        cmb_of_2 = dist*(((((M-dist)*N)%cmber.mod)*N)% cmber.mod) % cmber.mod

        score = (score+(cmb_of_2*cmber.cmb(N*M-2,K-2))%cmber.mod)%cmber.mod

     dist range(1,M) range 1 M cmb_of_2 = dist*(((((M-dist)*N)%cmber.mod)*N)% cmber.mod) % cmber.mod cmb_of_2 dist*(((((M-dist)*N)%cmber.mod)*N)% cmber.mod) % cmber.mod dist*(((((M-dist)*N)%cmber.mod)*N)% cmber.mod) dist ((((M-dist)*N)%cmber.mod)*N)% cmber.mod (((M-dist)*N)%cmber.mod)*N ((M-dist)*N)%cmber.mod (M-dist)*N M-dist M dist N cmber.mod cmber mod N cmber.mod cmber mod cmber.mod cmber mod score = (score+(cmb_of_2*cmber.cmb(N*M-2,K-2))%cmber.mod)%cmber.mod score (score+(cmb_of_2*cmber.cmb(N*M-2,K-2))%cmber.mod)%cmber.mod score+(cmb_of_2*cmber.cmb(N*M-2,K-2))%cmber.mod score (cmb_of_2*cmber.cmb(N*M-2,K-2))%cmber.mod cmb_of_2*cmber.cmb(N*M-2,K-2) cmb_of_2 cmber.cmb(N*M-2,K-2) cmber.cmb cmber cmb N*M-2 N*M N M 2 K-2 K 2 cmber.mod cmber mod cmber.mod cmber mod print(score) print score if __name__ == "__main__":
    resolve() __name__ == "__main__" __name__ "__main__" resolve() resolve class Cmber:
    def __init__(self,gensize,mod=10**9+7):
        self.mod = mod
        self.g1=[1,1]
        self.g2 = [1, 1] #逆元テーブル
        self.inverse = [0, 1] #逆元テーブル計算用テーブル
        self.getgen(gensize)
    def getgen(self,N):
        for i in range( 2, N + 1 ):
            self.g1.append( ( self.g1[-1] * i ) % self.mod )
            self.inverse.append( ( -self.inverse[self.mod % i] * (self.mod//i) ) % self.mod )
            self.g2.append( (self.g2[-1] * self.inverse[-1]) % self.mod )
 
    def cmb(self,n, r):
        if ( r<0 or r>n ):
            return 0
        r = min(r, n-r)
        return self.g1[n] * self.g2[r] * self.g2[n-r] % self.mod
 
    def cmb_very_high_n(self,n, r):
        if ( r<0 or r>n ):
            return 0
        g1=1
        r = min(r, n-r)
        for i in range(n-r+1,n+1):
            g1*=i
            g1%=self.mod
        return g1 * self.g2[r] % self.mod

    def multiple_cmb(self,vals):
        ans = self.g1[sum(vals)] % self.mod
        for i in vals:
            ans = (ans*self.g2[i])%self.mod
        return ans class Cmber:
    def __init__(self,gensize,mod=10**9+7):
        self.mod = mod
        self.g1=[1,1]
        self.g2 = [1, 1] #逆元テーブル
        self.inverse = [0, 1] #逆元テーブル計算用テーブル
        self.getgen(gensize)
    def getgen(self,N):
        for i in range( 2, N + 1 ):
            self.g1.append( ( self.g1[-1] * i ) % self.mod )
            self.inverse.append( ( -self.inverse[self.mod % i] * (self.mod//i) ) % self.mod )
            self.g2.append( (self.g2[-1] * self.inverse[-1]) % self.mod )
 
    def cmb(self,n, r):
        if ( r<0 or r>n ):
            return 0
        r = min(r, n-r)
        return self.g1[n] * self.g2[r] * self.g2[n-r] % self.mod
 
    def cmb_very_high_n(self,n, r):
        if ( r<0 or r>n ):
            return 0
        g1=1
        r = min(r, n-r)
        for i in range(n-r+1,n+1):
            g1*=i
            g1%=self.mod
        return g1 * self.g2[r] % self.mod

    def multiple_cmb(self,vals):
        ans = self.g1[sum(vals)] % self.mod
        for i in vals:
            ans = (ans*self.g2[i])%self.mod
        return ans Cmber def resolve():
    N,M,K = map(int,input().split())
    cmber = Cmber(N*M)
    score = 0
    for dist in range(1,N):
        cmb_of_2 = dist*(((((N-dist)*M)%cmber.mod)*M)% cmber.mod) % cmber.mod

        score = (score+(cmb_of_2*cmber.cmb(N*M-2,K-2))%cmber.mod)%cmber.mod
        
    for dist in range(1,M):
        cmb_of_2 = dist*(((((M-dist)*N)%cmber.mod)*N)% cmber.mod) % cmber.mod

        score = (score+(cmb_of_2*cmber.cmb(N*M-2,K-2))%cmber.mod)%cmber.mod

    print(score) def resolve():
    N,M,K = map(int,input().split())
    cmber = Cmber(N*M)
    score = 0
    for dist in range(1,N):
        cmb_of_2 = dist*(((((N-dist)*M)%cmber.mod)*M)% cmber.mod) % cmber.mod

        score = (score+(cmb_of_2*cmber.cmb(N*M-2,K-2))%cmber.mod)%cmber.mod
        
    for dist in range(1,M):
        cmb_of_2 = dist*(((((M-dist)*N)%cmber.mod)*N)% cmber.mod) % cmber.mod

        score = (score+(cmb_of_2*cmber.cmb(N*M-2,K-2))%cmber.mod)%cmber.mod

    print(score) resolve


class Cmber:
    def __init__(self,gensize,mod=10**9+7):
        self.mod = mod
        self.g1=[1,1]
        self.g2 = [1, 1] #逆元テーブル
        self.inverse = [0, 1] #逆元テーブル計算用テーブル
        self.getgen(gensize)
    def getgen(self,N):
        for i in range( 2, N + 1 ):
            self.g1.append( ( self.g1[-1] * i ) % self.mod )
            self.inverse.append( ( -self.inverse[self.mod % i] * (self.mod//i) ) % self.mod )
            self.g2.append( (self.g2[-1] * self.inverse[-1]) % self.mod )
 
    def cmb(self,n, r):
        if ( r<0 or r>n ):
            return 0
        r = min(r, n-r)
        return self.g1[n] * self.g2[r] * self.g2[n-r] % self.mod
 
    def cmb_very_high_n(self,n, r):
        if ( r<0 or r>n ):
            return 0
        g1=1
        r = min(r, n-r)
        for i in range(n-r+1,n+1):
            g1*=i
            g1%=self.mod
        return g1 * self.g2[r] % self.mod

    def multiple_cmb(self,vals):
        ans = self.g1[sum(vals)] % self.mod
        for i in vals:
            ans = (ans*self.g2[i])%self.mod
        return ans










def resolve():
    N,M,K = map(int,input().split())
    cmber = Cmber(N*M)
    score = 0
    for dist in range(1,N):
        cmb_of_2 = dist*(((((N-dist)*M)%cmber.mod)*M)% cmber.mod) % cmber.mod

        score = (score+(cmb_of_2*cmber.cmb(N*M-2,K-2))%cmber.mod)%cmber.mod
        
    for dist in range(1,M):
        cmb_of_2 = dist*(((((M-dist)*N)%cmber.mod)*N)% cmber.mod) % cmber.mod

        score = (score+(cmb_of_2*cmber.cmb(N*M-2,K-2))%cmber.mod)%cmber.mod

    print(score)

if __name__ == "__main__":
    resolve()