#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 100;
const int M = 21;
const long long mod = 1e9 + 7;
const long long MOD = 998244353;
const long double eps = 0.000000001;
const int P = 1336;
const long long inf = 1e17;
mt19937 gen(chrono::high_resolution_clock::now().time_since_epoch().count());
int x[N], y[N], z[N];
int32_t main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  srand(time(0));
  int q;
  cin >> q;
  for (int l = 0; l < q; l++) {
    string a, b, p;
    cin >> a >> b >> p;
    int n = a.size();
    int m = b.size();
    if (n > m) {
      cout << "NO" << '\n';
      continue;
    }
    int j = 0;
    for (int i = 0; i < m; i++) {
      if (j < n && b[i] == a[j]) j++;
    }
    if (j != n) {
      cout << "NO" << '\n';
      continue;
    }
    for (int i = 0; i < 26; i++) {
      x[i] = 0;
      y[i] = 0;
      z[i] = 0;
    }
    for (int i = 0; i < n; i++) {
      int c = int(a[i] - 'a');
      x[c]++;
    }
    for (int i = 0; i < m; i++) {
      int c = int(b[i] - 'a');
      y[c]++;
    }
    for (int i = 0; i < p.size(); i++) {
      int c = int(p[i] - 'a');
      z[c]++;
    }
    bool f = 1;
    for (int i = 0; i < 26; i++) {
      if (x[i] + z[i] < y[i]) {
        f = 0;
        break;
      }
    }
    if (f)
      cout << "YES" << '\n';
    else
      cout << "NO" << '\n';
  }
}
