#!/usr/bin/env python3
import sys, math, itertools, collections, bisect
input = lambda: sys.stdin.buffer.readline().rstrip().decode('utf-8')
inf = float('inf') ;mod = 10**9+7
mans = inf ;ans = 0 ;count = 0 ;pro = 1

n,m,k = map(int,input().split())
nm = n*m
class InverseTable:
    __slots__ = ['In', 'fac', 'Ifac']

    def __init__(self, mod, maxnum):
        self.In = [0, 1]; self.fac = [1, 1]; self.Ifac = [1, 1]
        for i in range( 2, maxnum + 1 ):
            self.In.append( ( -self.In[mod % i] * (mod//i) ) % mod )
            self.fac.append( ( self.fac[-1] * i ) % mod )
            self.Ifac.append( (self.Ifac[-1] * self.In[-1]) % mod )
        
    def cmb(self, n, r):
        if ( r<0 or r>n ): return 0
        r = min(r, n-r)
        return self.fac[n] * self.Ifac[r] * self.Ifac[n-r] % mod
    
    def per(self, n, r):
        if ( r<0 or r>n ): return 0
        return self.fac[n] * self.Ifac[n-r] % mod

invt = InverseTable(mod, 10**6)
# maxnum=10**6だとテーブル生成に200ms程かかるので（Pythonだと1000msほど）
# 最大生成領域は問題ごとに要検討
for i in range(n):
  for j in range(m):
    # print(i,j,(i * (i+1) // 2 + (n-1-i) * (n-i) //2 + j * (j+1) // 2 + (m-1-j) * (m-j) //2) * invt.cmb(nm-2,k-2))
    ans += ((i * (i+1) // 2 + (n-1-i) * (n-i) //2) * m + (j * (j+1) // 2 + (m-1-j) * (m-j) //2) * n) * invt.cmb(nm-2,k-2)
    ans %= mod
print(ans*pow(2,mod-2,mod)%mod) import sys, math, itertools, collections, bisect sys math itertools collections bisect input = lambda: sys.stdin.buffer.readline().rstrip().decode('utf-8') input lambda: sys.stdin.buffer.readline().rstrip().decode('utf-8') sys.stdin.buffer.readline().rstrip().decode('utf-8') sys.stdin.buffer.readline().rstrip().decode sys.stdin.buffer.readline().rstrip() sys.stdin.buffer.readline().rstrip sys.stdin.buffer.readline() sys.stdin.buffer.readline sys.stdin.buffer sys.stdin sys stdin buffer readline rstrip decode 'utf-8' inf = float('inf') inf float('inf') float 'inf' mod = 10**9+7 mod 10**9+7 10**9 10 9 7 mans = inf mans inf ans = 0 ans 0 count = 0 count 0 pro = 1 pro 1 n,m,k = map(int,input().split()) n map(int,input().split()) map int input().split() ().split () input split m k nm = n*m nm n*m n m class InverseTable:
    __slots__ = ['In', 'fac', 'Ifac']

    def __init__(self, mod, maxnum):
        self.In = [0, 1]; self.fac = [1, 1]; self.Ifac = [1, 1]
        for i in range( 2, maxnum + 1 ):
            self.In.append( ( -self.In[mod % i] * (mod//i) ) % mod )
            self.fac.append( ( self.fac[-1] * i ) % mod )
            self.Ifac.append( (self.Ifac[-1] * self.In[-1]) % mod )
        
    def cmb(self, n, r):
        if ( r<0 or r>n ): return 0
        r = min(r, n-r)
        return self.fac[n] * self.Ifac[r] * self.Ifac[n-r] % mod
    
    def per(self, n, r):
        if ( r<0 or r>n ): return 0
        return self.fac[n] * self.Ifac[n-r] % mod InverseTable __slots__ = ['In', 'fac', 'Ifac'] __slots__ ['In', 'fac', 'Ifac'] 'In' 'fac' 'Ifac' def __init__(self, mod, maxnum):
        self.In = [0, 1]; self.fac = [1, 1]; self.Ifac = [1, 1]
        for i in range( 2, maxnum + 1 ):
            self.In.append( ( -self.In[mod % i] * (mod//i) ) % mod )
            self.fac.append( ( self.fac[-1] * i ) % mod )
            self.Ifac.append( (self.Ifac[-1] * self.In[-1]) % mod )
        
     __init__ self.In = [0, 1] self.In self In [0, 1] 0 1 self.fac = [1, 1] self.fac self fac [1, 1] 1 1 self.Ifac = [1, 1] self.Ifac self Ifac [1, 1] 1 1 for i in range( 2, maxnum + 1 ):
            self.In.append( ( -self.In[mod % i] * (mod//i) ) % mod )
            self.fac.append( ( self.fac[-1] * i ) % mod )
            self.Ifac.append( (self.Ifac[-1] * self.In[-1]) % mod )
        
     i range( 2, maxnum + 1 ) range 2 maxnum + 1 maxnum 1 self.In.append( ( -self.In[mod % i] * (mod//i) ) % mod ) self.In.append self.In self In append ( -self.In[mod % i] * (mod//i) ) % mod -self.In[mod % i] * (mod//i) -self.In[mod % i] self.In[mod % i] self.In self In mod % i mod i mod//i mod i mod self.fac.append( ( self.fac[-1] * i ) % mod ) self.fac.append self.fac self fac append ( self.fac[-1] * i ) % mod self.fac[-1] * i self.fac[-1] self.fac self fac -1 i mod self.Ifac.append( (self.Ifac[-1] * self.In[-1]) % mod ) self.Ifac.append self.Ifac self Ifac append (self.Ifac[-1] * self.In[-1]) % mod self.Ifac[-1] * self.In[-1] self.Ifac[-1] self.Ifac self Ifac -1 self.In[-1] self.In self In -1 mod self self mod mod maxnum maxnum def cmb(self, n, r):
        if ( r<0 or r>n ): return 0
        r = min(r, n-r)
        return self.fac[n] * self.Ifac[r] * self.Ifac[n-r] % mod
    
     cmb if ( r<0 or r>n ): return 0
         r<0 or r>n r<0 r 0 r>n r n r = min(r, n-r) r min(r, n-r) min r n-r n r return self.fac[n] * self.Ifac[r] * self.Ifac[n-r] % mod self.fac[n] * self.Ifac[r] * self.Ifac[n-r] % mod self.fac[n] * self.Ifac[r] * self.Ifac[n-r] self.fac[n] * self.Ifac[r] self.fac[n] self.fac self fac n self.Ifac[r] self.Ifac self Ifac r self.Ifac[n-r] self.Ifac self Ifac n-r n r mod self self n n r r def per(self, n, r):
        if ( r<0 or r>n ): return 0
        return self.fac[n] * self.Ifac[n-r] % mod per if ( r<0 or r>n ): return 0
         r<0 or r>n r<0 r 0 r>n r n return self.fac[n] * self.Ifac[n-r] % mod self.fac[n] * self.Ifac[n-r] % mod self.fac[n] * self.Ifac[n-r] self.fac[n] self.fac self fac n self.Ifac[n-r] self.Ifac self Ifac n-r n r mod self self n n r r invt = InverseTable(mod, 10**6) invt InverseTable(mod, 10**6) InverseTable mod 10**6 10 6 for i in range(n):
  for j in range(m):
    # print(i,j,(i * (i+1) // 2 + (n-1-i) * (n-i) //2 + j * (j+1) // 2 + (m-1-j) * (m-j) //2) * invt.cmb(nm-2,k-2))
    ans += ((i * (i+1) // 2 + (n-1-i) * (n-i) //2) * m + (j * (j+1) // 2 + (m-1-j) * (m-j) //2) * n) * invt.cmb(nm-2,k-2)
    ans %= mod i range(n) range n for j in range(m):
    # print(i,j,(i * (i+1) // 2 + (n-1-i) * (n-i) //2 + j * (j+1) // 2 + (m-1-j) * (m-j) //2) * invt.cmb(nm-2,k-2))
    ans += ((i * (i+1) // 2 + (n-1-i) * (n-i) //2) * m + (j * (j+1) // 2 + (m-1-j) * (m-j) //2) * n) * invt.cmb(nm-2,k-2)
    ans %= mod j range(m) range m ans += ((i * (i+1) // 2 + (n-1-i) * (n-i) //2) * m + (j * (j+1) // 2 + (m-1-j) * (m-j) //2) * n) * invt.cmb(nm-2,k-2) ans ((i * (i+1) // 2 + (n-1-i) * (n-i) //2) * m + (j * (j+1) // 2 + (m-1-j) * (m-j) //2) * n) * invt.cmb(nm-2,k-2) (i * (i+1) // 2 + (n-1-i) * (n-i) //2) * m + (j * (j+1) // 2 + (m-1-j) * (m-j) //2) * n (i * (i+1) // 2 + (n-1-i) * (n-i) //2) * m i * (i+1) // 2 + (n-1-i) * (n-i) //2 i * (i+1) // 2 i * (i+1) i i+1 i 1 2 (n-1-i) * (n-i) //2 (n-1-i) * (n-i) n-1-i n-1 n 1 i n-i n i 2 m (j * (j+1) // 2 + (m-1-j) * (m-j) //2) * n j * (j+1) // 2 + (m-1-j) * (m-j) //2 j * (j+1) // 2 j * (j+1) j j+1 j 1 2 (m-1-j) * (m-j) //2 (m-1-j) * (m-j) m-1-j m-1 m 1 j m-j m j 2 n invt.cmb(nm-2,k-2) invt.cmb invt cmb nm-2 nm 2 k-2 k 2 ans %= mod ans mod print(ans*pow(2,mod-2,mod)%mod) print ans*pow(2,mod-2,mod)%mod ans*pow(2,mod-2,mod) ans pow(2,mod-2,mod) pow 2 mod-2 mod 2 mod mod mans = inf inf mans invt = InverseTable(mod, 10**6) InverseTable(mod, 10**6) invt ans %= mod mod ans class InverseTable:
    __slots__ = ['In', 'fac', 'Ifac']

    def __init__(self, mod, maxnum):
        self.In = [0, 1]; self.fac = [1, 1]; self.Ifac = [1, 1]
        for i in range( 2, maxnum + 1 ):
            self.In.append( ( -self.In[mod % i] * (mod//i) ) % mod )
            self.fac.append( ( self.fac[-1] * i ) % mod )
            self.Ifac.append( (self.Ifac[-1] * self.In[-1]) % mod )
        
    def cmb(self, n, r):
        if ( r<0 or r>n ): return 0
        r = min(r, n-r)
        return self.fac[n] * self.Ifac[r] * self.Ifac[n-r] % mod
    
    def per(self, n, r):
        if ( r<0 or r>n ): return 0
        return self.fac[n] * self.Ifac[n-r] % mod class InverseTable:
    __slots__ = ['In', 'fac', 'Ifac']

    def __init__(self, mod, maxnum):
        self.In = [0, 1]; self.fac = [1, 1]; self.Ifac = [1, 1]
        for i in range( 2, maxnum + 1 ):
            self.In.append( ( -self.In[mod % i] * (mod//i) ) % mod )
            self.fac.append( ( self.fac[-1] * i ) % mod )
            self.Ifac.append( (self.Ifac[-1] * self.In[-1]) % mod )
        
    def cmb(self, n, r):
        if ( r<0 or r>n ): return 0
        r = min(r, n-r)
        return self.fac[n] * self.Ifac[r] * self.Ifac[n-r] % mod
    
    def per(self, n, r):
        if ( r<0 or r>n ): return 0
        return self.fac[n] * self.Ifac[n-r] % mod InverseTable pro = 1 1 pro inf = float('inf') float('inf') inf n,m,k = map(int,input().split()) map(int,input().split()) n k = map(int,input().split()) map(int,input().split()) k count = 0 0 count nm = n*m n*m nm input = lambda: sys.stdin.buffer.readline().rstrip().decode('utf-8') lambda: sys.stdin.buffer.readline().rstrip().decode('utf-8') input ans += ((i * (i+1) // 2 + (n-1-i) * (n-i) //2) * m + (j * (j+1) // 2 + (m-1-j) * (m-j) //2) * n) * invt.cmb(nm-2,k-2) ((i * (i+1) // 2 + (n-1-i) * (n-i) //2) * m + (j * (j+1) // 2 + (m-1-j) * (m-j) //2) * n) * invt.cmb(nm-2,k-2) ans ans = 0 0 ans mod = 10**9+7 10**9+7 mod m,k = map(int,input().split()) map(int,input().split()) m
#!/usr/bin/env python3
import sys, math, itertools, collections, bisect
input = lambda: sys.stdin.buffer.readline().rstrip().decode('utf-8')
inf = float('inf') ;mod = 10**9+7
mans = inf ;ans = 0 ;count = 0 ;pro = 1

n,m,k = map(int,input().split())
nm = n*m
class InverseTable:
    __slots__ = ['In', 'fac', 'Ifac']

    def __init__(self, mod, maxnum):
        self.In = [0, 1]; self.fac = [1, 1]; self.Ifac = [1, 1]
        for i in range( 2, maxnum + 1 ):
            self.In.append( ( -self.In[mod % i] * (mod//i) ) % mod )
            self.fac.append( ( self.fac[-1] * i ) % mod )
            self.Ifac.append( (self.Ifac[-1] * self.In[-1]) % mod )
        
    def cmb(self, n, r):
        if ( r<0 or r>n ): return 0
        r = min(r, n-r)
        return self.fac[n] * self.Ifac[r] * self.Ifac[n-r] % mod
    
    def per(self, n, r):
        if ( r<0 or r>n ): return 0
        return self.fac[n] * self.Ifac[n-r] % mod

invt = InverseTable(mod, 10**6)
# maxnum=10**6だとテーブル生成に200ms程かかるので（Pythonだと1000msほど）
# 最大生成領域は問題ごとに要検討
for i in range(n):
  for j in range(m):
    # print(i,j,(i * (i+1) // 2 + (n-1-i) * (n-i) //2 + j * (j+1) // 2 + (m-1-j) * (m-j) //2) * invt.cmb(nm-2,k-2))
    ans += ((i * (i+1) // 2 + (n-1-i) * (n-i) //2) * m + (j * (j+1) // 2 + (m-1-j) * (m-j) //2) * n) * invt.cmb(nm-2,k-2)
    ans %= mod
print(ans*pow(2,mod-2,mod)%mod)