Problem:
Is it a Right Triangle?

Write a program which judges wheather given length of three side form a right triangle. Print "YES" if the given sides (integers) form a right triangle, "NO" if not so.

Input

Input consists of several data sets. In the first line, the number of data set, N is given. Then, N lines follow, each line corresponds to a data set. A data set consists of three integers separated by a single space.

Constraints

1 ≤ length of the side ≤ 1,000

N ≤ 1,000

Output

For each data set, print "YES" or "NO".

Sample Input

3
4 3 5
4 3 6
8 8 8

Output for the Sample Input

YES
NO
NO

Solution in JAVA (judge verdict: Wrong Answer)


import java.util.Scanner;

public class Main {

	public static void main(String[] args) {

		Scanner in = new Scanner(System.in);
		int setCount = in.nextInt();

		if (isValidEntry(setCount)) {

			boolean[] result = new boolean[setCount];
			for (int c = 0; c < setCount; c++) {

				if (isRightTriangle(in.nextInt(), in.nextInt(), in.nextInt())) {
					result[c] = true;
				}
			}
			for (int c = 0; c < setCount; c++) {
				System.out.println(result[c]);
			}
		} else {
			System.out.println("Invalid input. Please try again!!");
		}
		in.close();
	}

	static boolean isRightTriangle(int a, int b, int c) {

		if (!isValidEntry(a) || !isValidEntry(b) || !isValidEntry(c)) {
			return false;
		} else if (a * a + b * b == c * c || a * a + c * c == b * b
				|| c * c + b * b == a * a) {
			return true;
		} else {
			return false;
		}
	}

	static boolean isValidEntry(int input) {

		if (input > 0 && input <= 1000)
			return true;
		else
			return false;
	}
}