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.util.Arrays;
import java.util.Scanner;

public class Main {
	public static void main(String[] args){
		Toi junbi = new Junbi3();
		junbi.solve();
	}
}

interface Toi{
	public void solve();
}

class Junbi1 implements Toi{
	public void solve(){
		for (int i = 1; i <= 9; i++) {
			for (int j = 1; j <= 9; j++) {
				System.out.println(i + "x" + j + "=" + i * j);
			}
		}
	}
}

class Junbi2 implements Toi{
	public void solve(){
		Scanner sc = new Scanner(System.in);
		int[] array = new int[10];
		for (int i = 0; i < array.length; i++) {
			array[i] = sc.nextInt();
		}
		Arrays.sort(array);
		for (int i = 0; i < 3; i++) {
			System.out.println(array[array.length - (i + 1)]);
		}
	}
}

class Junbi3 implements Toi{
	public void solve(){
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		for (int i = 0; i < n; i++) {
			int[] array = new int[3];
			for (int j = 0; j < 3; j++) {
				array[j] = sc.nextInt();
			}
			Arrays.sort(array);
			double num = Math.sqrt(Math.pow((double)array[0], 2.) + Math.pow((double)array[1], 2.));
			if(Math.abs(num - (double)array[2]) < 1E-8){
				System.out.println("YES");
			}else{
				System.out.println("NO");
			}
		}
	}
}