A chessboard n × m in size is given. During the zero minute we repaint all the black squares to the 0 color. During the i-th minute we repaint to the i color the initially black squares that have exactly four corner-adjacent squares painted i - 1 (all such squares are repainted simultaneously). This process continues ad infinitum. You have to figure out how many squares we repainted exactly x times.

The upper left square of the board has to be assumed to be always black. Two squares are called corner-adjacent, if they have exactly one common point.

Input

The first line contains integers n and m (1 ≤ n, m ≤ 5000). The second line contains integer x (1 ≤ x ≤ 109).

Output

Print how many squares will be painted exactly x times.

Examples

Input

3 3
1


Output

4


Input

3 3
2


Output

1


Input

1 1
1


Output

1
#include <bits/stdc++.h>
using namespace std;
const int BASE = 1000000000;
const int len = 9;
void Read(vector<int> &a, string &s) {
  for (int i = (int)s.size(); i > 0; i -= len) {
    if (i < len)
      a.push_back(atoi(s.substr(0, i).c_str()));
    else
      a.push_back(atoi(s.substr(i - len, i).c_str()));
  }
}
void Print(const vector<int> &a) {
  printf("%d", a.empty() ? 0 : a.back());
  for (int i = a.size() - 2; i >= 0; --i) printf("%09d", a[i]);
  printf("\n");
}
void Normalize(vector<int> &a) {
  while (a.size() > 1 && a.back() == 0) a.pop_back();
}
vector<int> operator*(vector<int> a, int b) {
  int carry = 0;
  for (size_t i = 0; i < a.size() || carry; ++i) {
    if (i == a.size()) a.push_back(0);
    long long cur = carry + a[i] * 1ll * b;
    a[i] = int(cur % BASE);
    carry = int(cur / BASE);
  }
  Normalize(a);
  return a;
}
vector<int> operator/(vector<int> a, int b) {
  int carry = 0;
  for (int i = (int)a.size() - 1; i >= 0; --i) {
    long long cur = a[i] + carry * 1ll * BASE;
    a[i] = int(cur / b);
    carry = int(cur % b);
  }
  Normalize(a);
  return a;
}
int Compare(const vector<int> &a, const vector<int> &b) {
  if (a.size() < b.size())
    return -1;
  else if (a.size() > b.size())
    return 1;
  else {
    for (int i = a.size() - 1; i >= 0; --i) {
      if (a[i] < b[i])
        return -1;
      else if (a[i] > b[i])
        return 1;
    }
    return 0;
  }
}
const int NMAX = 5000;
int main() {
  int n, m, x;
  cin >> n >> m >> x;
  n -= 2 * (x - 1);
  m -= 2 * (x - 1);
  int ans = 0;
  if (m <= 0 || n <= 0)
    ans = 0;
  else {
    for (int i = 0; i < n; ++i)
      for (int j = 0; j < m; ++j)
        if ((i + j) % 2 == 0 && (i == 0 || j == 0 || i == n - 1 || j == m - 1))
          ++ans;
  }
  cout << ans;
  return 0;
}
