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
import java.io.*;
import java.util.*;
import static java.lang.Math.*;

public class Solution_B implements Runnable {

	public static void main(String[] args) {
		new Thread(new Solution_B()).start();
	}

	BufferedReader in;
	PrintWriter out;
	StringTokenizer st;

	private String next() throws Exception {
		if (st == null || !st.hasMoreElements())
			st = new StringTokenizer(in.readLine());
		return st.nextToken();
	}

	private int nextInt() throws Exception {
		return Integer.parseInt(next());
	}

	private long nextLong() throws Exception {
		return Long.parseLong(next());
	}

	private double nextDouble() throws Exception {
		return Double.parseDouble(next());
	}

	@Override
	public void run() {
		try {
			in = new BufferedReader(new InputStreamReader(System.in));
			out = new PrintWriter(System.out);
			solve();
		} catch (Exception ex) {
			throw new RuntimeException(ex);
		} finally {
			out.close();
		}
	}
	int n, m;
	boolean used[][];
	int [][] a;
	public void solve() throws Exception {
		n = nextInt();
		m = nextInt();
		int times = nextInt();
		a = new int [5001][5001];
		int start = 1;
		for (int j = 1;j < times;j++){
			
			if (start > a.length) {
				out.println(0);
				return;
			}
			start += 2;
			
		}
		a[start][start] = 1;
		for (int i = start + 1, tmp = 0, curr = 1; i < a.length; i++, tmp++){
			if (tmp%2 == 1) curr++;
			a[i][start] = curr;
			a[start][i] = curr;
		}
		for (int i = start + 1; i < a.length; i++)
			a[start+1][i] = a[i][start+1] = a[start+1][i-1] + 1;
		for (int i = start + 2; i < a.length; i++)
			for(int j = start + 1; j < a.length; j++)
				a[i][j] = a[i-1][j] + 1;
		out.println(a[n][m]);
	}
	int get(int x, int y){
		if (x < 0 || y < 0 || x >= n || y >= m) return -1;
		return a[x][y];
	}
}
