For this Question: Ram is learning chess for the first time, So his father first starts his training with the piece <b>Knight</b>. His father gave Ram 2 random points ((x, y) and (a, b)), ie position of any piece on a 8x8 chess board and then asks Ram can he put the knight on the board so that both of the pieces get attacked at the same time? If yes then print "YES" we can otherwise "NO".The first line of the input contains a space separated integer T.
The first line of each test case contains two space separated integer x, y.
The second line of each test case contains two space separated integer a, b.

<b>Constraints</b>
1 ≤ T ≤ 5000
1 ≤ x, y ≤ 8
1 ≤ a, b ≤ 8
Both the cells are distinctPrint "YES" if the fork exists otherwise print "NO".Sample Input 
3
8 1
7 3
3 7
5 2
3 5
2 2

Sample Output
NO
NO
YES

<b>Explanation</b>
For test cases 1 and 2 no such point exists, but for test case 3 (1, 4) is the point that can cause a fork., I have written this Solution Code: /**
 *    author:  tourist1256
 *    created: 2022-06-14 14:26:47
 **/

#include <bits/stdc++.h>

#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>

using namespace std;
using namespace __gnu_pbds;

template <class T>
using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;

template <class key, class value, class cmp = std::less<key>>
using ordered_map = tree<key, value, cmp, rb_tree_tag, tree_order_statistics_node_update>;
// find_by_order(k)  returns iterator to kth element starting from 0;
// order_of_key(k) returns count of elements strictly smaller than k;

#ifdef LOCAL
#define debug(...) cerr << "[" << #__VA_ARGS__ << "]:", debug_out(__VA_ARGS__)
#else
#define debug(...) 2351
#endif

#define int long long

mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());

inline int64_t random_long(long long l = LLONG_MIN, long long r = LLONG_MAX) {
    uniform_int_distribution<int64_t> generator(l, r);
    return generator(rng);
}

void solve() {
    pair<int, int> a, b;
    cin >> a.first >> a.second >> b.first >> b.second;
    set<pair<int, int>> pointA, pointB;
    auto getPoints = [&](int x, int y) -> set<pair<int, int>> {
        set<pair<int, int>> tempPoints;
        // Top Left
        tempPoints.insert({x - 1, y + 2});
        tempPoints.insert({x - 2, y + 1});

        // Top Right
        tempPoints.insert({x + 1, y + 2});
        tempPoints.insert({x + 2, y + 1});

        // Bottom Left
        tempPoints.insert({x - 2, y - 1});
        tempPoints.insert({x - 1, y - 2});

        // Bottom Right
        tempPoints.insert({x + 2, y - 1});
        tempPoints.insert({x + 1, y - 2});

        return tempPoints;
    };

    pointA = getPoints(a.first, a.second);
    pointB = getPoints(b.first, b.second);

    for (auto &it : pointA) {
        if (it.first < 1 or it.first > 8) {
            continue;
        }
        if (it.second < 1 or it.second > 8) {
            continue;
        }
        if (pointB.find(it) != pointB.end()) {
            debug(it.first, it.second);
            cout << "YES" << endl;
            return;
        }
    }
    cout << "NO\n";
}

int32_t main() {
    int tt;
    cin >> tt;
    while (tt--) {
        solve();
    }
}, In this Programming Language: C++, Now tell me if this Code is compilable or not?