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.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class Main {
	public static void main(String[] args) throws IOException{
		
		BufferedReader buf= new BufferedReader(new InputStreamReader(System.in));
		String str =buf.readLine(); //入力する桁数
		int count=Integer.parseInt(str);
		
		int[] a=new int[count];
		int[] b=new int[count];
		int[] c=new int[count];
		
		for(int i=0;i<count;i++){
			str=buf.readLine();
			a[i]=Integer.parseInt(str.split(" ")[0]);
			b[i]=Integer.parseInt(str.split(" ")[1]);
			c[i]=Integer.parseInt(str.split(" ")[2]);
		}
		buf.close();
		for(int i=0;i<count;i++){
			if(
				(a[i]< (b[i]+c[i]) )&& /*三角形の成立条件（一つの辺は、他の２辺の長さの和よりも小さい）*/
				(b[i]< (a[i]+c[i]) )&&
				(c[i]< (a[i]+b[i]) )
			){
				if(
					(a[i]*a[i]+b[i]*b[i]==c[i]*c[i])|| /*直角三角形の成立条件（ピタゴラスの定理、a＾2 + b＾2 = c＾2）*/
					(a[i]*a[i]+c[i]*c[i]==b[i]*b[i])||
					(b[i]*b[i]+c[i]*c[i]==a[i]*a[i])
				){
					System.out.println("YES");
				}else{
					System.out.println("NO");
				}
			}else{
				System.out.println("NO");
			}

		}
	}
}