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;

class Main {
	public static void main(String[] a){
		Scanner scan = new Scanner(System.in);

		int[] x, y, z;
		int swap;
		
		int n = scan.nextInt();
		x = new int[n];
		y = new int[n];
		z = new int[n];
		
		for(int i = 0; i < n; i++){
			x[i] = scan.nextInt();
			y[i] = scan.nextInt();
			z[i] = scan.nextInt();
			
			if(y[i] < x[i] && x[i] < z[i]){
				swap = x[i];
				x[i] = y[i];
				y[i] = swap;
			}else if(x[i] < z[i] && z[i] < y[i]){
				swap = z[i];
				z[i] = y[i];
				y[i] = swap;				
			}else if(z[i] < x[i] && x[i] < y[i]){
				swap = x[i];
				x[i] = z[i];
				z[i] = y[i];
				y[i] = swap;
			}else if(z[i] < y[i] && y[i] < x[i]){
				swap = x[i];
				x[i] = z[i];
				z[i] = swap;				
			}else if(y[i] < z[i] && z[i] < x[i]){
				swap = y[i];
				y[i] = z[i];
				z[i] = x[i];
				x[i] = swap;
			}
		}
		
		for(int i = 0; i < n; i++){
			if(x[i]*x[i] + y[i]*y[i] == z[i]*z[i] || (x[i] <= 1 && y[i] <= 1 && z[i] <= 1)) System.out.println("YES");
			else System.out.println("NO");
		}
	}
}