#include <bits/stdc++.h>
using namespace std;
int t, l1, l2, l3, s1[30], s2[30], s3[30], cha[30];
char c1[105], c2[105], c3[105];
int read() {
  int t = 1, s = 0;
  char c = getchar();
  while ((c > '9' || c < '0') && c != '-') c = getchar();
  if (c == '-') t = -1, c = getchar();
  while (c >= '0' && c <= '9') s = s * 10 + c - '0', c = getchar();
  return s * t;
}
int main(void) {
  scanf("%d", &t);
  while (t--) {
    memset(s1, 0, sizeof(s1));
    memset(s2, 0, sizeof(s2));
    memset(s3, 0, sizeof(s3));
    memset(cha, 0, sizeof(cha));
    scanf("%s", c1);
    l1 = strlen(c1);
    scanf("%s", c2);
    l2 = strlen(c2);
    scanf("%s", c3);
    l3 = strlen(c3);
    for (int i = 0; i < l1; i++) s1[c1[i] - 'a']++;
    for (int i = 0; i < l2; i++) s2[c2[i] - 'a']++;
    for (int i = 0; i < l3; i++) s3[c3[i] - 'a']++;
    bool tmp = 0;
    for (int i = 0; i < 26; i++) {
      cha[i] = s2[i] - s1[i];
      if (cha[i] < 0) {
        printf("NO\n");
        tmp = 1;
        break;
      }
    }
    if (tmp == 1) continue;
    for (int i = 0; i < 26; i++) {
      s3[i] -= cha[i];
      if (s3[i] < 0) {
        printf("NO\n");
        tmp = 1;
        break;
      }
    }
    memset(s3, 0, sizeof(s3));
    for (int i = 0; i < l3; i++) s3[c3[i] - 'a']++;
    if (tmp == 1) continue;
    if (l1 > l2) {
      printf("NO\n");
      continue;
    }
    if (l1 == l2) {
      for (int i = 0; i < l1; i++)
        if (c1[i] != c2[i]) {
          printf("NO\n");
          tmp = 1;
          break;
        }
      if (tmp == 1) continue;
      printf("YES\n");
      continue;
    }
    int now = 0;
    for (int i = 0; i < l2; i++) {
      if (c2[i] == c1[now]) {
        now++;
        continue;
      }
      if (s3[c2[i] - 'a'] > 0)
        s3[c2[i] - 'a']--, l1++;
      else {
        printf("NO\n");
        tmp = 1;
        break;
      }
      if (l1 > l2) {
        printf("NO\n");
        tmp = 1;
        break;
      }
    }
    if (tmp == 1) continue;
    printf("YES\n");
  }
}
