#include <iostream>
#include <vector>
#include <algorithm>

typedef long long ll;

std::vector<int> divisors(int k) {
    std::vector<int> answer{1}, stack{k};
    for (int i = 2; i * i <= k; ++i) {
        const int j = k / i;
        if (j * i == k) {
            answer.push_back(i);
            stack.push_back(j);
        }
    }
    while (stack.back() == answer.back()) stack.pop_back();
    while (!stack.empty()) { answer.push_back(stack.back()); stack.pop_back(); }
    return answer;
}

const int mod = (int)1e9+7;

int main() {
    int n, m, k;
    std::cin >> n >> m >> k;
    int answer = 0;
    for (int side1 : divisors(k)) {
        const int side2 = k / side1;
        answer += (ll)std::max(0,n-side1) * std::max(0, m-side2) % mod;
        if (answer >= mod) answer -= mod;
    }
    std::cout << answer;
    return 0;
}