#include <bits/stdc++.h>
using namespace std;
int seg[1200030];
vector<stack<int>> v(300005);
void build(int s, int e, int i) {
  if (s == e) {
    if (!v[s].empty()) {
      seg[i] = v[s].top();
      return;
    } else {
      seg[i] = INT_MAX;
      return;
    }
  }
  int mid = (s + e) / 2;
  build(s, mid, 2 * i);
  build(mid + 1, e, 2 * i + 1);
  seg[i] = min(seg[2 * i], seg[2 * i + 1]);
  return;
}
void update(int s, int e, int i, int ind) {
  if (s == e) {
    if (!v[ind].empty()) {
      seg[i] = v[ind].top();
      return;
    } else {
      seg[i] = INT_MAX;
      return;
    }
  }
  int mid = (s + e) / 2;
  if (ind <= mid) {
    update(s, mid, 2 * i, ind);
  } else {
    update(mid + 1, e, 2 * i + 1, ind);
  }
  seg[i] = min(seg[2 * i], seg[2 * i + 1]);
  return;
}
int querry(int s, int e, int l, int r, int i) {
  if (l > r) {
    return INT_MAX;
  }
  if (s == l && r == e) {
    return seg[i];
  }
  int mid = (s + e) / 2;
  return min(querry(s, mid, l, min(mid, r), 2 * i),
             querry(mid + 1, e, max(mid + 1, l), r, 2 * i + 1));
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  build(1, 300000, 1);
  int t;
  cin >> t;
  while (t--) {
    int n;
    cin >> n;
    int arr[n], brr[n];
    for (int i = 0; i < n; i++) {
      cin >> arr[i];
    }
    for (int i = n - 1; i >= 0; i--) {
      int temp = arr[i];
      v[temp].push(i);
      update(1, 300000, 1, temp);
    }
    int ch = 0;
    for (int i = 0; i < n; i++) {
      cin >> brr[i];
    }
    for (int i = 0; i < n; i++) {
      if (v[brr[i]].empty()) {
        for (int j = n - 1; j >= 0; j--) {
          int temp = arr[j];
          if (!v[temp].empty()) {
            v[temp].pop();
            update(1, 300000, 1, temp);
          } else {
            update(1, 300000, 1, temp);
          }
        }
        cout << "NO\n";
        ch++;
        break;
      }
      int ind = querry(1, 300000, 1, brr[i] - 1, 1);
      if (ind >= v[brr[i]].top()) {
        v[brr[i]].pop();
        update(1, 300000, 1, brr[i]);
      } else {
        for (int j = n - 1; j >= 0; j--) {
          int temp = arr[j];
          if (!v[temp].empty()) {
            v[temp].pop();
            update(1, 300000, 1, temp);
          } else {
            update(1, 300000, 1, temp);
          }
        }
        cout << "NO\n";
        ch++;
        break;
      }
    }
    if (ch == 0) {
      cout << "YES\n";
    }
  }
}
