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 C# (Mono 4.6.2.0) (judge verdict: Wrong Answer)

using System;
using System.Linq;
using System.Collections.Generic;

class Hello
{
    public static void Main()
    {
        var s = Console.ReadLine().Split().Select(int.Parse).ToArray();
        int n = s[0], m = s[1], k = s[2];
        bool isOk = false;
        bool goBack = false;
        if ((k / n <= m && k % n == 0) || (k / m <= n && k % m == 0))
        {
            Console.WriteLine("Yes");
            return;
        }

        if (n > m)
        {
            int tmp = n;
            n = m;
            m = tmp;
        }

        int black = n;
        int startCount = 1;
        while (true)
        {
            if (!goBack)
            {
                black += n;
                startCount++;
            }
            else if (goBack)
            {
                int v = (m - startCount);
                black -= startCount;
                black += v;
                startCount--;
            }

            if (black == k) { break; }

            if (!goBack && black > k)
            {
                goBack = true;
            }
            if ((goBack && startCount <= 0) || (goBack && black < k))
            {
                Console.WriteLine("No");
                return;
            }
        }
        Console.WriteLine("Yes");

    }

}