/C04043 - Tam giác vuông

<Problem>

https://code.ptit.edu.vn/student/question/C04043
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
#include <math.h>
#include <limits.h>


#define max(i, j) ((i > j) ? i : j)
#define min(i, j) ((i < j) ? i : j)

int main() {
	int t;

	scanf("%d", &t);

	while (t--) {
		int n;
		scanf("%d", &n);

		long long arr[10000] = { 0 };

		for (int i = 0; i < n; i++) {
			scanf("%d", &arr[i]);
			arr[i] = arr[i] * arr[i];
		}


		bool check = false;

		for (int i = 0; i < n - 2; i++) {
			for (int j = i + 1; j < n - 1; j++) {
				long long tmp = (long long)sqrt(arr[i] + arr[j]);

				if (arr[i] + arr[j] == tmp * tmp) {
					for (int k = j + 1; k < n; k++) {
						if (arr[i] + arr[j] == arr[k]) {
							check = true;
							break;
						}
					}
				}
				if (check) break;
			}
			if (check) break;
		}

		if (check) printf("YES");
		else printf("NO");

		printf("\n");
	}

	return 0;
}