Problem: 2061D - Kevin and Numbers
Language: C++17 (GCC 7-32)


Submission (verdict: Wrong answer on test 3):
#include <bits/stdc++.h>

#include <numeric>

using namespace std;



// #define pi (3.141592653589)

//#define mod 1000000007

 //#define pb push_back

// #define is insert

// #define mp make_pair

// #define ff first

// #define ss second

// #define all(x) x.begin(), x.end()

// #define min3(a, b, c) min(c, min(a, b))

// #define min4(a, b, c, d) min(d, min(c, min(a, b)))

// #define rfr(n) for(int i=n-1;i>=0;i--)

// #define rep1(i,a,b) for(long long i=a;i<=b;i++)

// #define fr(n) for(long long i=0;i<n;i++)

// #define nesfr(x,y) for(long long i=0;i<x;i++)for(long long j=0;j<y;j++)

// #define nesf1(x,y) for(long long i=1;i<x;i++)for(long long j=1;j<y;j++)



// #define rep(i,a,b) for(long long i=a;i<b;i++)

//#define fast ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);

#define fastIO                                                                 \

    ios::sync_with_stdio(false);                                               \

    cin.tie(NULL);                                                             \

    cout.tie(NULL);                                                            \

    cout.precision(numeric_limits<double>::max_digits10);

 typedef long long ll;

// typedef long double ld;

// typedef vector<ll> vi;

// #define nl cout << "\n"

#define int long long

using ull = unsigned long long;

// const int INF = 2e18;



// const int MAX_BIT = 30;

// const int MOD = 998244353;

// int add(int x, int y) {

//     x += y;

//     if (x >= MOD) x -= MOD;

//     return x;

// }

//bool special = false;

// long long gcd(long long a, long long b) {

//     while (b) {

//         a %= b;

//         std::swap(a,b);

//     }

//     return a;

// }



// #define MAXN 1001

// int a[MAXN];



// int count_char(const string& s, char c) {

//     int cnt = 0;

//     for (char ch : s) {

//         if (ch == c) cnt++;

//     }

//     return cnt; 

// }









// int floorOp(int x, int n) {

//     while(n--) {

//         if(x == 0) break;

//         x /= 2;

//     }

//     return x;

// }



// int ceilOp(int x, int m) {

//     while(m--) {

//         if(x <= 1) break;

//         x = (x + 1) / 2;

//     }

//     return x;

// }





void solve() {

    int n, m;

        cin >> n >> m;

        multiset <int> s, g;

        deque <int> d, e;

        for(int i = 1; i <= n; i++) {

            int x;

            cin >> x;

            s.insert(x);

        }

        for(int i = 1; i <= m; i++) {

            int x;

            cin >> x;

            if(s.find(x) != s.end()) s.erase(s.find(x));

            else g.insert(x);

        }

        bool tr = 0;

        while(s.size() > 0 && g.size() > 0 && s.size() >= 2) {

            int x1 = *s.begin(), x2 = *(++s.begin());

            int in = x1 + x2;

            if(x2 - x1 > 1) {

                tr = 1;

                break;

            }

            s.erase(s.find(x1));

            s.erase(s.find(x2));

            if(g.find(in) != g.end()) g.erase(g.find(in));

            else s.insert(in);

        }

        if(s.size() != 0 || tr || g.size() != 0) cout << "No" << endl;

        else cout << "Yes" << endl;;

}





int32_t main() {

    int t = 1;

    cin >> t;

    while (t--) {

        solve();

    }

    return 0;

}