#!/usr/bin/env python3
def main():
    N, M, K = map(int, input().split())
    m = 10**9+7
    # 方針: ２つの駒の距離だけ考えれば良い、それ以外K-2個の駒の位置が(N*M-2)C(K-2)通りある
    # マンハッタン距離はx方向とy方向を独立に扱える
    ans = 0
    for d in range(1,M):
        ans += (d*(M-d)%m) * pow(N,2,m) % m
        ans %= m

    for d in range(1,N):
        ans += (d*(N-d)%m) * pow(M,2,m) % m
        ans %= m

    # 答えに(NM-2)C(K-2)かける
    # K回しか処理しないから間に合う
    for r in range(K-2):
        ans *= ((N*M%m-2)%m-r)%m
        ans %= m
        ans *= pow(r+1,m-2,m)
        ans %= m
    print(ans)

if __name__ == "__main__":
    main() def main():
    N, M, K = map(int, input().split())
    m = 10**9+7
    # 方針: ２つの駒の距離だけ考えれば良い、それ以外K-2個の駒の位置が(N*M-2)C(K-2)通りある
    # マンハッタン距離はx方向とy方向を独立に扱える
    ans = 0
    for d in range(1,M):
        ans += (d*(M-d)%m) * pow(N,2,m) % m
        ans %= m

    for d in range(1,N):
        ans += (d*(N-d)%m) * pow(M,2,m) % m
        ans %= m

    # 答えに(NM-2)C(K-2)かける
    # K回しか処理しないから間に合う
    for r in range(K-2):
        ans *= ((N*M%m-2)%m-r)%m
        ans %= m
        ans *= pow(r+1,m-2,m)
        ans %= m
    print(ans) main N, M, K = map(int, input().split()) N map(int, input().split()) map int input().split() ().split () input split M K m = 10**9+7 m 10**9+7 10**9 10 9 7 ans = 0 ans 0 for d in range(1,M):
        ans += (d*(M-d)%m) * pow(N,2,m) % m
        ans %= m

     d range(1,M) range 1 M ans += (d*(M-d)%m) * pow(N,2,m) % m ans (d*(M-d)%m) * pow(N,2,m) % m (d*(M-d)%m) * pow(N,2,m) d*(M-d)%m d*(M-d) d M-d M d m pow(N,2,m) pow N 2 m m ans %= m ans m for d in range(1,N):
        ans += (d*(N-d)%m) * pow(M,2,m) % m
        ans %= m

    # 答えに(NM-2)C(K-2)かける
    # K回しか処理しないから間に合う
     d range(1,N) range 1 N ans += (d*(N-d)%m) * pow(M,2,m) % m ans (d*(N-d)%m) * pow(M,2,m) % m (d*(N-d)%m) * pow(M,2,m) d*(N-d)%m d*(N-d) d N-d N d m pow(M,2,m) pow M 2 m m ans %= m ans m for r in range(K-2):
        ans *= ((N*M%m-2)%m-r)%m
        ans %= m
        ans *= pow(r+1,m-2,m)
        ans %= m
     r range(K-2) range K-2 K 2 ans *= ((N*M%m-2)%m-r)%m ans ((N*M%m-2)%m-r)%m (N*M%m-2)%m-r (N*M%m-2)%m N*M%m-2 N*M%m N*M N M m 2 m r m ans %= m ans m ans *= pow(r+1,m-2,m) ans pow(r+1,m-2,m) pow r+1 r 1 m-2 m 2 m ans %= m ans m print(ans) print ans if __name__ == "__main__":
    main() __name__ == "__main__" __name__ "__main__" main() main def main():
    N, M, K = map(int, input().split())
    m = 10**9+7
    # 方針: ２つの駒の距離だけ考えれば良い、それ以外K-2個の駒の位置が(N*M-2)C(K-2)通りある
    # マンハッタン距離はx方向とy方向を独立に扱える
    ans = 0
    for d in range(1,M):
        ans += (d*(M-d)%m) * pow(N,2,m) % m
        ans %= m

    for d in range(1,N):
        ans += (d*(N-d)%m) * pow(M,2,m) % m
        ans %= m

    # 答えに(NM-2)C(K-2)かける
    # K回しか処理しないから間に合う
    for r in range(K-2):
        ans *= ((N*M%m-2)%m-r)%m
        ans %= m
        ans *= pow(r+1,m-2,m)
        ans %= m
    print(ans) def main():
    N, M, K = map(int, input().split())
    m = 10**9+7
    # 方針: ２つの駒の距離だけ考えれば良い、それ以外K-2個の駒の位置が(N*M-2)C(K-2)通りある
    # マンハッタン距離はx方向とy方向を独立に扱える
    ans = 0
    for d in range(1,M):
        ans += (d*(M-d)%m) * pow(N,2,m) % m
        ans %= m

    for d in range(1,N):
        ans += (d*(N-d)%m) * pow(M,2,m) % m
        ans %= m

    # 答えに(NM-2)C(K-2)かける
    # K回しか処理しないから間に合う
    for r in range(K-2):
        ans *= ((N*M%m-2)%m-r)%m
        ans %= m
        ans *= pow(r+1,m-2,m)
        ans %= m
    print(ans) main
#!/usr/bin/env python3
def main():
    N, M, K = map(int, input().split())
    m = 10**9+7
    # 方針: ２つの駒の距離だけ考えれば良い、それ以外K-2個の駒の位置が(N*M-2)C(K-2)通りある
    # マンハッタン距離はx方向とy方向を独立に扱える
    ans = 0
    for d in range(1,M):
        ans += (d*(M-d)%m) * pow(N,2,m) % m
        ans %= m

    for d in range(1,N):
        ans += (d*(N-d)%m) * pow(M,2,m) % m
        ans %= m

    # 答えに(NM-2)C(K-2)かける
    # K回しか処理しないから間に合う
    for r in range(K-2):
        ans *= ((N*M%m-2)%m-r)%m
        ans %= m
        ans *= pow(r+1,m-2,m)
        ans %= m
    print(ans)

if __name__ == "__main__":
    main()
