Problem:
Score : 200 points

Problem Statement

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.

Sample Input 1

2 2 2

Sample Output 1

Yes

Press the buttons in the order of the first row, the first column.

Sample Input 2

2 2 1

Sample Output 2

No

Sample Input 3

3 5 8

Sample Output 3

Yes

Press the buttons in the order of the first column, third column, second row, fifth column.

Sample Input 4

7 9 20

Sample Output 4

No

Solution in Rust (1.15.1) (judge verdict: Accepted)

use std::io::{self, BufRead};

fn main() {
	let stdin = io::stdin();
    let mut ns = stdin.lock().split(b' ').map(|r| String::from_utf8(r.unwrap()).unwrap().trim_right().parse().unwrap());
    let n: u32 = ns.next().unwrap();
    let m = ns.next().unwrap();
    let k = ns.next().unwrap();

    // x,yが存在して Nx + My - 2xy = K <=> Yes
    let mut numer = k;
    let mut denom = n;
    for _ in 0..n {
    	// x = (K-My)/(N-2y)
        if numer % denom == 0 && numer / denom <= m {
        	println!("Yes");
            return;
        }
        if denom <= 2 { break; }
        numer -= m;
        denom -= 2;
    }

	// y = N/2
    if denom == 2 && m*n == k {
    	println!("Yes");
        return;
    }

    println!("No");
}