import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {

	public static void main(String[] args) throws Exception {

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		// データセット数を取得
		String lineCountStr = br.readLine();

		// 各データセットを処理
		for (int lineCount = 0; lineCount < Integer.parseInt(lineCountStr); lineCount ++) {

			String[] dataSetStr = br.readLine().split(" ");
			int[] dataSet = new int[dataSetStr.length];
			for (int i = 0; i < dataSetStr.length; i ++) {
				dataSet[i] = Integer.parseInt(dataSetStr[i]);
			}

			// 一番大きい値が右端になるようにソート
			if (dataSet[0] > dataSet[1]) {
				int tmp = dataSet[0];
				dataSet[0] = dataSet[1];
				dataSet[1] = tmp;
			}
			if (dataSet[1] > dataSet[2]) {
				int tmp = dataSet[1];
				dataSet[1] = dataSet[2];
				dataSet[2] = tmp;
			}

			// 直角三角形であれば "YES", それ以外であれば "NO" を出力
			if (Math.pow(dataSet[0], 2) + Math.pow(dataSet[1], 2) == Math.pow(dataSet[2], 2)) {
				System.out.println("YES");
			} else {
				System.out.println("NO");
			}
		}
	}
}
 import java.io.BufferedReader; BufferedReader java.io import java.io.InputStreamReader; InputStreamReader java.io public class Main {

	public static void main(String[] args) throws Exception {

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		// データセット数を取得
		String lineCountStr = br.readLine();

		// 各データセットを処理
		for (int lineCount = 0; lineCount < Integer.parseInt(lineCountStr); lineCount ++) {

			String[] dataSetStr = br.readLine().split(" ");
			int[] dataSet = new int[dataSetStr.length];
			for (int i = 0; i < dataSetStr.length; i ++) {
				dataSet[i] = Integer.parseInt(dataSetStr[i]);
			}

			// 一番大きい値が右端になるようにソート
			if (dataSet[0] > dataSet[1]) {
				int tmp = dataSet[0];
				dataSet[0] = dataSet[1];
				dataSet[1] = tmp;
			}
			if (dataSet[1] > dataSet[2]) {
				int tmp = dataSet[1];
				dataSet[1] = dataSet[2];
				dataSet[2] = tmp;
			}

			// 直角三角形であれば "YES", それ以外であれば "NO" を出力
			if (Math.pow(dataSet[0], 2) + Math.pow(dataSet[1], 2) == Math.pow(dataSet[2], 2)) {
				System.out.println("YES");
			} else {
				System.out.println("NO");
			}
		}
	}
} Main public static void main(String[] args) throws Exception {

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		// データセット数を取得
		String lineCountStr = br.readLine();

		// 各データセットを処理
		for (int lineCount = 0; lineCount < Integer.parseInt(lineCountStr); lineCount ++) {

			String[] dataSetStr = br.readLine().split(" ");
			int[] dataSet = new int[dataSetStr.length];
			for (int i = 0; i < dataSetStr.length; i ++) {
				dataSet[i] = Integer.parseInt(dataSetStr[i]);
			}

			// 一番大きい値が右端になるようにソート
			if (dataSet[0] > dataSet[1]) {
				int tmp = dataSet[0];
				dataSet[0] = dataSet[1];
				dataSet[1] = tmp;
			}
			if (dataSet[1] > dataSet[2]) {
				int tmp = dataSet[1];
				dataSet[1] = dataSet[2];
				dataSet[2] = tmp;
			}

			// 直角三角形であれば "YES", それ以外であれば "NO" を出力
			if (Math.pow(dataSet[0], 2) + Math.pow(dataSet[1], 2) == Math.pow(dataSet[2], 2)) {
				System.out.println("YES");
			} else {
				System.out.println("NO");
			}
		}
	} main {

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		// データセット数を取得
		String lineCountStr = br.readLine();

		// 各データセットを処理
		for (int lineCount = 0; lineCount < Integer.parseInt(lineCountStr); lineCount ++) {

			String[] dataSetStr = br.readLine().split(" ");
			int[] dataSet = new int[dataSetStr.length];
			for (int i = 0; i < dataSetStr.length; i ++) {
				dataSet[i] = Integer.parseInt(dataSetStr[i]);
			}

			// 一番大きい値が右端になるようにソート
			if (dataSet[0] > dataSet[1]) {
				int tmp = dataSet[0];
				dataSet[0] = dataSet[1];
				dataSet[1] = tmp;
			}
			if (dataSet[1] > dataSet[2]) {
				int tmp = dataSet[1];
				dataSet[1] = dataSet[2];
				dataSet[2] = tmp;
			}

			// 直角三角形であれば "YES", それ以外であれば "NO" を出力
			if (Math.pow(dataSet[0], 2) + Math.pow(dataSet[1], 2) == Math.pow(dataSet[2], 2)) {
				System.out.println("YES");
			} else {
				System.out.println("NO");
			}
		}
	} BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); br new BufferedReader(new InputStreamReader(System.in)) String lineCountStr = br.readLine(); lineCountStr br.readLine() br.readLine br for (int lineCount = 0; lineCount < Integer.parseInt(lineCountStr); lineCount ++) {

			String[] dataSetStr = br.readLine().split(" ");
			int[] dataSet = new int[dataSetStr.length];
			for (int i = 0; i < dataSetStr.length; i ++) {
				dataSet[i] = Integer.parseInt(dataSetStr[i]);
			}

			// 一番大きい値が右端になるようにソート
			if (dataSet[0] > dataSet[1]) {
				int tmp = dataSet[0];
				dataSet[0] = dataSet[1];
				dataSet[1] = tmp;
			}
			if (dataSet[1] > dataSet[2]) {
				int tmp = dataSet[1];
				dataSet[1] = dataSet[2];
				dataSet[2] = tmp;
			}

			// 直角三角形であれば "YES", それ以外であれば "NO" を出力
			if (Math.pow(dataSet[0], 2) + Math.pow(dataSet[1], 2) == Math.pow(dataSet[2], 2)) {
				System.out.println("YES");
			} else {
				System.out.println("NO");
			}
		} int lineCount = 0; int lineCount = 0; lineCount 0 lineCount < Integer.parseInt(lineCountStr) lineCount Integer.parseInt(lineCountStr) Integer.parseInt Integer lineCountStr lineCount ++ lineCount ++ lineCount {

			String[] dataSetStr = br.readLine().split(" ");
			int[] dataSet = new int[dataSetStr.length];
			for (int i = 0; i < dataSetStr.length; i ++) {
				dataSet[i] = Integer.parseInt(dataSetStr[i]);
			}

			// 一番大きい値が右端になるようにソート
			if (dataSet[0] > dataSet[1]) {
				int tmp = dataSet[0];
				dataSet[0] = dataSet[1];
				dataSet[1] = tmp;
			}
			if (dataSet[1] > dataSet[2]) {
				int tmp = dataSet[1];
				dataSet[1] = dataSet[2];
				dataSet[2] = tmp;
			}

			// 直角三角形であれば "YES", それ以外であれば "NO" を出力
			if (Math.pow(dataSet[0], 2) + Math.pow(dataSet[1], 2) == Math.pow(dataSet[2], 2)) {
				System.out.println("YES");
			} else {
				System.out.println("NO");
			}
		} {

			String[] dataSetStr = br.readLine().split(" ");
			int[] dataSet = new int[dataSetStr.length];
			for (int i = 0; i < dataSetStr.length; i ++) {
				dataSet[i] = Integer.parseInt(dataSetStr[i]);
			}

			// 一番大きい値が右端になるようにソート
			if (dataSet[0] > dataSet[1]) {
				int tmp = dataSet[0];
				dataSet[0] = dataSet[1];
				dataSet[1] = tmp;
			}
			if (dataSet[1] > dataSet[2]) {
				int tmp = dataSet[1];
				dataSet[1] = dataSet[2];
				dataSet[2] = tmp;
			}

			// 直角三角形であれば "YES", それ以外であれば "NO" を出力
			if (Math.pow(dataSet[0], 2) + Math.pow(dataSet[1], 2) == Math.pow(dataSet[2], 2)) {
				System.out.println("YES");
			} else {
				System.out.println("NO");
			}
		} String[] dataSetStr = br.readLine().split(" "); dataSetStr br.readLine().split(" ") br.readLine().split br.readLine() br.readLine br " " int[] dataSet = new int[dataSetStr.length]; dataSet new int[dataSetStr.length] dataSetStr.length dataSetStr dataSetStr.length for (int i = 0; i < dataSetStr.length; i ++) {
				dataSet[i] = Integer.parseInt(dataSetStr[i]);
			} int i = 0; int i = 0; i 0 i < dataSetStr.length i dataSetStr.length dataSetStr dataSetStr.length i ++ i ++ i {
				dataSet[i] = Integer.parseInt(dataSetStr[i]);
			} {
				dataSet[i] = Integer.parseInt(dataSetStr[i]);
			} dataSet[i] = Integer.parseInt(dataSetStr[i]) dataSet[i] dataSet i Integer.parseInt(dataSetStr[i]) Integer.parseInt Integer dataSetStr[i] dataSetStr i if (dataSet[0] > dataSet[1]) {
				int tmp = dataSet[0];
				dataSet[0] = dataSet[1];
				dataSet[1] = tmp;
			} dataSet[0] > dataSet[1] dataSet[0] dataSet 0 dataSet[1] dataSet 1 {
				int tmp = dataSet[0];
				dataSet[0] = dataSet[1];
				dataSet[1] = tmp;
			} int tmp = dataSet[0]; tmp dataSet[0] dataSet 0 dataSet[0] = dataSet[1] dataSet[0] dataSet 0 dataSet[1] dataSet 1 dataSet[1] = tmp dataSet[1] dataSet 1 tmp if (dataSet[1] > dataSet[2]) {
				int tmp = dataSet[1];
				dataSet[1] = dataSet[2];
				dataSet[2] = tmp;
			} dataSet[1] > dataSet[2] dataSet[1] dataSet 1 dataSet[2] dataSet 2 {
				int tmp = dataSet[1];
				dataSet[1] = dataSet[2];
				dataSet[2] = tmp;
			} int tmp = dataSet[1]; tmp dataSet[1] dataSet 1 dataSet[1] = dataSet[2] dataSet[1] dataSet 1 dataSet[2] dataSet 2 dataSet[2] = tmp dataSet[2] dataSet 2 tmp if (Math.pow(dataSet[0], 2) + Math.pow(dataSet[1], 2) == Math.pow(dataSet[2], 2)) {
				System.out.println("YES");
			} else {
				System.out.println("NO");
			} Math.pow(dataSet[0], 2) + Math.pow(dataSet[1], 2) == Math.pow(dataSet[2], 2) Math.pow(dataSet[0], 2) + Math.pow(dataSet[1], 2) Math.pow(dataSet[0], 2) Math.pow Math dataSet[0] dataSet 0 2 Math.pow(dataSet[1], 2) Math.pow Math dataSet[1] dataSet 1 2 Math.pow(dataSet[2], 2) Math.pow Math dataSet[2] dataSet 2 2 {
				System.out.println("YES");
			} System.out.println("YES") System.out.println System.out System System.out "YES" {
				System.out.println("NO");
			} System.out.println("NO") System.out.println System.out System System.out "NO" String[] args args public class Main {

	public static void main(String[] args) throws Exception {

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		// データセット数を取得
		String lineCountStr = br.readLine();

		// 各データセットを処理
		for (int lineCount = 0; lineCount < Integer.parseInt(lineCountStr); lineCount ++) {

			String[] dataSetStr = br.readLine().split(" ");
			int[] dataSet = new int[dataSetStr.length];
			for (int i = 0; i < dataSetStr.length; i ++) {
				dataSet[i] = Integer.parseInt(dataSetStr[i]);
			}

			// 一番大きい値が右端になるようにソート
			if (dataSet[0] > dataSet[1]) {
				int tmp = dataSet[0];
				dataSet[0] = dataSet[1];
				dataSet[1] = tmp;
			}
			if (dataSet[1] > dataSet[2]) {
				int tmp = dataSet[1];
				dataSet[1] = dataSet[2];
				dataSet[2] = tmp;
			}

			// 直角三角形であれば "YES", それ以外であれば "NO" を出力
			if (Math.pow(dataSet[0], 2) + Math.pow(dataSet[1], 2) == Math.pow(dataSet[2], 2)) {
				System.out.println("YES");
			} else {
				System.out.println("NO");
			}
		}
	}
} public class Main {

	public static void main(String[] args) throws Exception {

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		// データセット数を取得
		String lineCountStr = br.readLine();

		// 各データセットを処理
		for (int lineCount = 0; lineCount < Integer.parseInt(lineCountStr); lineCount ++) {

			String[] dataSetStr = br.readLine().split(" ");
			int[] dataSet = new int[dataSetStr.length];
			for (int i = 0; i < dataSetStr.length; i ++) {
				dataSet[i] = Integer.parseInt(dataSetStr[i]);
			}

			// 一番大きい値が右端になるようにソート
			if (dataSet[0] > dataSet[1]) {
				int tmp = dataSet[0];
				dataSet[0] = dataSet[1];
				dataSet[1] = tmp;
			}
			if (dataSet[1] > dataSet[2]) {
				int tmp = dataSet[1];
				dataSet[1] = dataSet[2];
				dataSet[2] = tmp;
			}

			// 直角三角形であれば "YES", それ以外であれば "NO" を出力
			if (Math.pow(dataSet[0], 2) + Math.pow(dataSet[1], 2) == Math.pow(dataSet[2], 2)) {
				System.out.println("YES");
			} else {
				System.out.println("NO");
			}
		}
	}
} Main
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {

	public static void main(String[] args) throws Exception {

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		// データセット数を取得
		String lineCountStr = br.readLine();

		// 各データセットを処理
		for (int lineCount = 0; lineCount < Integer.parseInt(lineCountStr); lineCount ++) {

			String[] dataSetStr = br.readLine().split(" ");
			int[] dataSet = new int[dataSetStr.length];
			for (int i = 0; i < dataSetStr.length; i ++) {
				dataSet[i] = Integer.parseInt(dataSetStr[i]);
			}

			// 一番大きい値が右端になるようにソート
			if (dataSet[0] > dataSet[1]) {
				int tmp = dataSet[0];
				dataSet[0] = dataSet[1];
				dataSet[1] = tmp;
			}
			if (dataSet[1] > dataSet[2]) {
				int tmp = dataSet[1];
				dataSet[1] = dataSet[2];
				dataSet[2] = tmp;
			}

			// 直角三角形であれば "YES", それ以外であれば "NO" を出力
			if (Math.pow(dataSet[0], 2) + Math.pow(dataSet[1], 2) == Math.pow(dataSet[2], 2)) {
				System.out.println("YES");
			} else {
				System.out.println("NO");
			}
		}
	}
}

