/*
    AOJ Volume0 0003

        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
*/

#include <iostream>


bool is_right_triangle(int edge1, int edge2, int edge3)
{
    int edge[3] = { edge1, edge2, edge3 };
    int longest = 0;
    int other1 = 1, other2 = 2;

    for(int i=1; i<3; ++i)
    {
        if(edge[i] > edge[longest])
        {
            longest = i;
            if(longest == 1){ other1 = 0; other2 = 2; }
            if(longest == 2){ other1 = 0; other2 = 1; }
        }
    }

    int aa = edge[other1] * edge[other1];
    int bb = edge[other2] * edge[other2];
    int cc = edge[longest] * edge[longest];

    return aa + bb == cc;
}


int main(void)
{
    int N;
    std::cin >> N;

    for(int i=0; i<N; i++)
    {
        int e, f, g;
        std::cin >> e >> f >> g;

        bool ans = is_right_triangle(e,f,g);
        std::cout << (ans ? "YES" : "NO") << std::endl;
    }

    return 0;
}
