#include <bits/stdc++.h>
using namespace std;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  long long int q;
  cin >> q;
  while (q--) {
    long long int j = 0, flag = 0, flagc = 1;
    string s, t, p;
    cin >> s >> t >> p;
    for (long long int i = 0; i < t.size(); i++) {
      if (t[i] == s[j]) {
        j++;
        if (j == s.size()) {
          flag = 1;
          break;
        }
      }
    }
    if (flag == 0) {
      cout << "NO"
           << "\n";
      flagc = 0;
    } else {
      map<char, long long int> m1, m2, m3;
      map<char, long long int>::iterator it;
      vector<long long int> c1, c2, c3;
      for (char i = 'a'; i <= 'z'; i++) {
        m1[i] = 0;
        m2[i] = 0;
        m3[i] = 0;
      }
      for (long long int i = 0; i < s.size(); i++) {
        m1[s[i]]++;
      }
      for (long long int i = 0; i < t.size(); i++) {
        m2[t[i]]++;
      }
      for (long long int i = 0; i < p.size(); i++) {
        m3[p[i]]++;
      }
      for (it = m1.begin(); it != m1.end(); it++) {
        c1.push_back(it->second);
      }
      for (it = m2.begin(); it != m2.end(); it++) {
        c2.push_back(it->second);
      }
      for (it = m3.begin(); it != m3.end(); it++) {
        c3.push_back(it->second);
      }
      for (long long int i = 0; i < c1.size(); i++) {
        if (abs(c1[i] - c2[i]) > c3[i]) {
          cout << "NO"
               << "\n";
          flagc = 0;
          break;
        }
      }
    }
    if (flagc == 1) {
      cout << "YES"
           << "\n";
    }
  }
  return 0;
}
