#include <bits/stdc++.h>
using namespace std;
template <typename T>
ostream& operator<<(ostream& os, const vector<T>& p) {
  os << "[ ";
  for (T x : p) os << x << " ";
  os << "]" << endl;
  return os;
}
template <typename T>
ostream& operator<<(ostream& os, const set<T>& p) {
  os << "{ ";
  for (T x : p) os << x << " ";
  os << "}" << endl;
  return os;
}
template <typename T>
ostream& operator<<(ostream& os, const multiset<T>& p) {
  os << "{ ";
  for (T x : p) os << x << " ";
  os << "}" << endl;
  return os;
}
template <typename Tk, typename Tv>
ostream& operator<<(ostream& os, const map<Tk, Tv>& p) {
  os << "{ ";
  for (pair<Tk, Tv> x : p) os << x << " ";
  os << "}" << endl;
  return os;
}
template <typename Tk, typename Tv>
ostream& operator<<(ostream& os, const pair<Tk, Tv>& p) {
  os << "{" << p.first << ',' << p.second << "}";
  return os;
}
long long gcd(long long a, long long b) { return (a ? gcd(b % a, a) : b); }
long long power(long long a, long long n) {
  long long p = 1;
  while (n > 0) {
    if (n & 1) {
      p = p * a;
    }
    n >>= 1;
    a *= a;
  }
  return p;
}
long long power(long long a, long long n, long long mod) {
  long long p = 1;
  while (n > 0) {
    if (n & 1) {
      p = p * a;
      p %= mod;
    }
    n >>= 1;
    a *= a;
    a %= mod;
  }
  return p % mod;
}
string s[100005];
char a[100005], b[] = {'<', '3'};
int main() {
  int i, j;
  int n;
  scanf("%d", &n);
  for (i = 0; i < n; i++) cin >> s[i];
  scanf("%s", a);
  i = 0, j = 0;
  int l = strlen(a);
  while (i < 2 && j < l) {
    if (a[j] == b[i]) i++;
    j++;
  }
  int fl = 0;
  for (i = 0; i < n; i++) {
    int x = 0;
    if (j == l) break;
    while (j < l) {
      if (a[j] == s[i][x]) x++;
      j++;
      if (x == s[i].size()) break;
    }
    x = 0;
    while (j < l && x < 2) {
      if (a[j] == b[x]) x++;
      j++;
    }
    if (i == n - 1 && x == 2) fl = 1;
  }
  puts(fl == 1 ? "yes" : "no");
  return 0;
}
