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: Accepted)

import java.io.*;

public class Main{
	public static int findMax(int line0, int line1, int line2){
		int max;
		int num;
		if(line0 >= line1){
			max = line0;
			num = 0;
		}else{
			max = line1;
			num = 1;
		}
		
		if(max < line2){
			max = line2;
			num = 2;
		}
		return num;
	}
	
	public static void main(String[] argv) throws NumberFormatException, IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int lineNum = Integer.parseInt(br.readLine());
		for(int i=0; i<lineNum; i++){
			String[] line = br.readLine().split(" ");
			int max = findMax(Integer.parseInt(line[0]), Integer.parseInt(line[1]), Integer.parseInt(line[2]));
			int[] lineInt = {Integer.parseInt(line[0]), Integer.parseInt(line[1]), Integer.parseInt(line[2])};
			int sum = 0;
			for(int j=0; j<3; j++){
				if(j != max){
					sum += (lineInt[j] * lineInt[j]);
				}
			}
			String out;
			if((lineInt[max] * lineInt[max]) == sum){
				out = "YES";
			}else{
				out = "NO";
			}
			System.out.print(out+"\n");
		}
	}
}