t = int(input())
testcases = []
for _ in range(t):
n = int(input())
x = list(map(int, input().split()))
y = list(map(int, input().split()))
testcases.append((x,y))
def checkOne(arr,targ,val):
can = val
l1 = 0
l2 = 0
while l1 < len(arr):
if arr[l1] == targ[l2]:
l1 += 1
l2 += 1
else:
if arr[l1]+1 == targ[l2] and can > 0:
l1 += 1
l2 += 1
can -= 1
else:
return False
return True
def checkPossible(curr,target):
for i in range(len(curr)+1):
if checkOne(curr,target,i):
return 'YES'
return 'NO'
for c,t in testcases:
c.sort()
t.sort()
x = checkPossible(c,t)
print(x)
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define ld long double
#define nline "\n"
#define ff first
#define ss second
#define pb push_back
#define int long long
#define fl(i,k,n) for (int i = k; i < n; i++)
#define rfl(i,n, k) for (int i = n; i >= k; i--)
#define fel(a,x) for (auto& a : x)
#define mp make_pair
#define ppb pop_back
#define ps(x, y) fixed << setprecision(y) << x
#define setbit(x) __builtin_popcount(x);
#define all(var) var.begin(), var.end()
#define desc greater<int>()
#define spc <<" "<<
#define YES cout << "YES\n";
#define NO cout << "NO\n";
#define Yes cout << "Yes\n";
#define No cout << "No\n";
#define minus1 cout << "-1\n";
#define one cout << "1\n";
#define gcd(a, b) __gcd(a, b)
#define PI 3.141592653589793238462
#define sz(x) ( (int)(x).size())
#define jay_shri_ram ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
// Builtin data types
typedef pair<int, int> pii ;
typedef vector<int> vi ;
typedef vector<string> vs ;
typedef vector<pii> vpi ;
typedef vector <pair<int , int> > vpi ;
typedef vector<bool> vb ;
typedef vector<vector<int>> vvi ;
typedef map<int, int> mpii ;
typedef set<int> seti ;
typedef multiset<int> mseti ;
typedef unordered_set<int> useti ;
typedef unordered_map<int, int> umapii ;
typedef unsigned long long ull ;
//constants
const int MAX_N = 1e5 + 5;
const int MOD = 1e9 + 7;
const int INF = 1e9;
const int EPS = 1e-9;
//debugger
#ifndef ONLINE_JUDGE
#define db(x) cerr << #x <<" "; _print(x); cerr << endl;
#else
#define db(x)
#endif
void _print(int t) {cerr << t;}
void _print(string t) {cerr << t;}
void _print(char t) {cerr << t;}
void _print(ld t) {cerr << t;}
void _print(double t) {cerr << t;}
template <class T, class V> void _print(pair <T, V> p);
template <class T> void _print(vector <T> v);
template <class T> void _print(set <T> v);
template <class T, class V> void _print(map <T, V> v);
template <class T> void _print(multiset <T> v);
template <class T, class V>
void _print(pair <T, V> p) {
cerr << "{"; _print(p.ff); cerr << ","; _print(p.ss); cerr << "}";
}
template <class T>
void _print(vector <T> v) {
cerr << "[ ";
for (T i : v) {
_print(i);
cerr << " ";
}
cerr << "]";
}
template <class T>
void _print(set <T> v) {
cerr << "[ ";
for (T i : v) {
_print(i);
cerr << " ";
}
cerr << "]";
}
template <class T>
void _print(multiset <T> v) {
cerr << "[ ";
for (T i : v) {
_print(i);
cerr << " ";
}
cerr << "]";
}
template <class T, class V>
void _print(map <T, V> v) {
cerr << "[ ";
for (auto i : v) {
_print(i);
cerr << " ";
}
cerr << "]";
}
//-------------------------------Think&Code----------------------------------*/
void solve() {
int n ; cin >> n ;
vi arr(n), brr(n);
multiset<int> ms ;
for (int i = 0 ; i < n; i++) {cin >> arr[i]; }
for (int i = 0 ; i < n; i++) {cin >> brr[i] ; ms.insert(brr[i]);}
if (arr == brr) {
YES
return ;
}
db(arr);
db(ms);
sort(all(arr));
sort(all(brr));
for (int i = 0 ; i < n; i ++) {
if (ms.count(arr[i]) ) {
ms.erase(ms.find(arr[i]));
}
else {
if (ms.count(arr[i] + 1) ) {
ms.erase(ms.find(arr[i] + 1));
}
}
}
if (ms.empty()) {
YES
} else {
NO
}
}
int32_t main() {
#ifndef ONLINE_JUDGE
freopen("Error.txt", "w", stderr);
#endif
jay_shri_ram;
int t ; cin >> t;
//int t=1;
while (t--) {
solve();
}
}
/* -----------------END OF PROGRAM --------------------*/
1302. Deepest Leaves Sum | 1209. Remove All Adjacent Duplicates in String II |
994. Rotting Oranges | 983. Minimum Cost For Tickets |
973. K Closest Points to Origin | 969. Pancake Sorting |
967. Numbers With Same Consecutive Differences | 957. Prison Cells After N Days |
946. Validate Stack Sequences | 921. Minimum Add to Make Parentheses Valid |
881. Boats to Save People | 497. Random Point in Non-overlapping Rectangles |
528. Random Pick with Weight | 470. Implement Rand10() Using Rand7() |
866. Prime Palindrome | 1516A - Tit for Tat |
622. Design Circular Queue | 814. Binary Tree Pruning |
791. Custom Sort String | 787. Cheapest Flights Within K Stops |
779. K-th Symbol in Grammar | 701. Insert into a Binary Search Tree |
429. N-ary Tree Level Order Traversal | 739. Daily Temperatures |
647. Palindromic Substrings | 583. Delete Operation for Two Strings |
518. Coin Change 2 | 516. Longest Palindromic Subsequence |
468. Validate IP Address | 450. Delete Node in a BST |