Vasya has got three integers n, m and k. He'd like to find three integer points (x_1, y_1), (x_2, y_2), (x_3, y_3), such that 0 ≤ x_1, x_2, x_3 ≤ n, 0 ≤ y_1, y_2, y_3 ≤ m and the area of the triangle formed by these points is equal to nm/k.

Help Vasya! Find such points (if it's possible). If there are multiple solutions, print any of them.

Input

The single line contains three integers n, m, k (1≤ n, m ≤ 10^9, 2 ≤ k ≤ 10^9).

Output

If there are no such points, print "NO".

Otherwise print "YES" in the first line. The next three lines should contain integers x_i, y_i — coordinates of the points, one point per line. If there are multiple solutions, print any of them.

You can print each letter in any case (upper or lower).

Examples

Input

4 3 3


Output

YES
1 0
2 3
4 1


Input

4 4 7


Output

NO

Note

In the first example area of the triangle should be equal to nm/k = 4. The triangle mentioned in the output is pictured below: 

<image>

In the second example there is no triangle with area nm/k = 16/7.
import java.util.Scanner;

public class ProblemA {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner input = new Scanner(System.in);
		
		long n = input.nextLong();
		long m = input.nextLong();
		long either = 2;
		long k = input.nextLong();
		long originalN = n;
		long originalM = m;
		
		
		//find x and y such that
		// x * y / 2 = n * m / k
		//x * y = n * m * 2 / k
		
		long total = n * m * either;
		if(total % k != 0){
			System.out.println("NO");
		}
		else{
			long dim1 = 1;
			long dim2 = 1;
			long eitherDim = 1;
			int factor = 2;
			while (k != 1){
				if(k%factor == 0){
					k /= factor;
					if(n % factor == 0){
						n /= factor;
						dim1 *= factor;
					}
					else if(m%factor == 0){
						m /= factor;
						dim2 *= factor;
					} else if(either % factor == 0){
						either /= factor;
						eitherDim *= factor;
					} else{
						throw new Error();
					}
				}
			    else{
			    	factor++;
			    }
			}
			
			long dist1 = n;
			long dist2 = m;
			long dist3 = either;
			if(dist1 * dist3 <= originalN){
				dist1 *= dist3;
			}
			else if(dist2 * dist3 <= originalM){
				dist2 *= dist3;
			} else{
				throw new Error();
			}
			System.out.println("YES");
			System.out.println(0 + " " + 0);
			System.out.println(0 + " " + dist2);
			System.out.println(dist1 + " " + 0);
		}
		
		
		
		
	}

}
