We have a grid with N rows and M columns of squares. Initially, all the squares are white.

There is a button attached to each row and each column. When a button attached to a row is pressed, the colors of all the squares in that row are inverted; that is, white squares become black and vice versa. When a button attached to a column is pressed, the colors of all the squares in that column are inverted.

Takahashi can freely press the buttons any number of times. Determine whether he can have exactly K black squares in the grid.

Constraints

* 1 \leq N,M \leq 1000
* 0 \leq K \leq NM

Input

Input is given from Standard Input in the following format:


N M K


Output

If Takahashi can have exactly K black squares in the grid, print `Yes`; otherwise, print `No`.

Examples

Input

2 2 2


Output

Yes


Input

2 2 1


Output

No


Input

3 5 8


Output

Yes


Input

7 9 20


Output

No
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class Main {

	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		String[] tmpArray = br.readLine().split(" ");
		
		int n = Integer.parseInt(tmpArray[0]);
		int m = Integer.parseInt(tmpArray[1]);
		int k = Integer.parseInt(tmpArray[2]);
		
		boolean possible = false;
		
		if(n*m == k){
			possible = true;
		}
		
		for(int i = 0; i < n ; i++){
			for(int j = 0; j < m; j++){
				int black = i*m - j*(i)+j*(n-i);
				
				if(black == k){
					possible = true;
				}
			}
		}
//		boolean[] possible = new boolean[k+1];
//		
//		possible[0] = true;
//		if(n == 1 || m == 1){
//			possible[1] = true;
//		}
//		
//		for(int i = 2; i <= k; i++){
//			if(k % m == 0){
//				possible[k] = true;
//			}
//			else if(k % n == 0){
//				possible[k] = true;
//			}
//		}
		
		if(possible){
			System.out.println("Yes");
		}
		else {
			System.out.println("No");
		}
	}

}
