#define D(x) cout << #x " = " << x << endl
#define DD(x, y) cout << "(" #x ", " #y ") = (" << x << ", " << y << ")" << endl
#define DDD(x, y, z) cout << "(" #x ", " #y ", " #z ") = (" << x << ", " << y << ", " << z << ")" << endl
#define DV(v) for (auto __macro_vi : v){ cout << __macro_vi << " ";} cout << endl;
#define DA(a, n) for (int __macro_i = 0; __macro_i < n; ++__macro_i) { cout << a[__macro_i] << " "; } cout << endl;
#define REP(i, n) for (int i = 0; i < n; ++i)
#define ALL(v) (v).begin(), (v).end()
#include<iostream>
#include<vector>
#include<cassert>
#include<cmath>
#include<algorithm>

using namespace std;
int t[3];
int n;
int main()
{
    cin >> n;
    for(int i = 0; i < n; ++i) {
        for(int k = 0; k < 3; ++k) {
            cin >> t[k];
        }
        sort(t, t + 3);
        cout << ((t[2] * t[2] == t[0] * t[0] + t[1] * t[1]) ? "YES" : "NO") << endl;
    }
}

