Seryozha has a very changeable character. This time he refused to leave the room to Dima and his girlfriend (her hame is Inna, by the way). However, the two lovebirds can always find a way to communicate. Today they are writing text messages to each other.

Dima and Inna are using a secret code in their text messages. When Dima wants to send Inna some sentence, he writes out all words, inserting a heart before each word and after the last word. A heart is a sequence of two characters: the "less" characters (<) and the digit three (3). After applying the code, a test message looks like that: <3word_1<3word_2<3 ... word_{n}<3.

Encoding doesn't end here. Then Dima inserts a random number of small English characters, digits, signs "more" and "less" into any places of the message.

Inna knows Dima perfectly well, so she knows what phrase Dima is going to send her beforehand. Inna has just got a text message. Help her find out if Dima encoded the message correctly. In other words, find out if a text message could have been received by encoding in the manner that is described above.


-----Input-----

The first line contains integer n (1 ≤ n ≤ 10^5) — the number of words in Dima's message. Next n lines contain non-empty words, one word per line. The words only consist of small English letters. The total length of all words doesn't exceed 10^5. 

The last line contains non-empty text message that Inna has got. The number of characters in the text message doesn't exceed 10^5. A text message can contain only small English letters, digits and signs more and less.


-----Output-----

In a single line, print "yes" (without the quotes), if Dima decoded the text message correctly, and "no" (without the quotes) otherwise.


-----Examples-----
Input
3
i
love
you
<3i<3love<23you<3

Output
yes

Input
7
i
am
not
main
in
the
family
<3i<>3am<3the<3<main<3in<3the<3><3family<3

Output
no



-----Note-----

Please note that Dima got a good old kick in the pants for the second sample from the statement.

Difficulty: interview

Starter code:

Solutions:
n = int(input())
arr = []
for i in range(n):
    s = input()
    arr.append('<')
    arr.append('3')
    for j in range(len(s)):
        arr.append(s[j])
arr.append('<')
arr.append('3')
s = input()
cur = 0
i = 0
while cur < len(s) and i < len(arr):
    if s[cur] == arr[i]:
        i+=1
    cur+=1
if i == len(arr):
    print('yes')
else:
    print('no')

n=int(input())
s1=['<3']
for i in range(n):
    s=input()
    s1.append(s)
    s1.append('<3')
s=input()
j=0
k=0
for i in s:
    if i==s1[j][k]:
        if len(s1[j])==k+1:
            j+=1
            if j==len(s1):
                print('yes')
                return
            k=0
        else:
            k+=1
if len(s1)==j and len(s1[j])==k:
    print('yes')
else:
    print('no')

n=int(input())

encode1=''.join(['<3'+input() for i in range(n)])+'<3'

encode2=input()

i=0
j=0
while i<len(encode1) and j<len(encode2):
    if(encode1[i] == encode2[j]):
        i+=1
        j+=1
    else:
        t=encode2[j]
        if not (('z'>=t and t>='a') or ('9'>=t and t>='0') or t=='>' or t=='<'):
            i=999999
            j=999999
        j+=1

if i==len(encode1):
    print('yes')
else:
    print('no')


def readln(): return tuple(map(int, input().split()))

n, = readln()
sms = '<3'.join([''] + [input() for _ in range(n)] + [''])
s = 0
for c in list(input()):
    if sms[s] == c:
        s += 1
    if s == len(sms):
        break
print('yes' if s == len(sms) else 'no')


def encoded_correcttly(right, message):
    for word in right: 
        # Find the heart
        if '<' in message:
            current_index = message.find('<') + 1
            message = message[current_index:]
        else:
            return False

        # Find the 3
        if '3' in message:
            current_index = message.find('3') + 1
            message = message[current_index:]
        else:
            return False


        # Find the word
        for char in word:
            if char in message:
                current_index = message.find(char) + 1
                message = message[current_index:]
            else:
                return False

    # Find the last heart and 3
    
    # Find the heart
    if '<' in message:
        current_index = message.find('<') + 1
        message = message[current_index:]
    else:
        return False


    # Find the 3
    if '3' in message:
        current_index = message.find('3') + 1
        message = message[current_index:]
    else:
        return False



    
    return True

n = int(input())
l = []
for i in range(n):
    l.append(input())
message = input()
    
if (encoded_correcttly(l, message)):
    print("yes")
else:
    print("no")


def Find(i,x):
    for z in range(i,len(S)):
        if(S[z]==x):
            return z
    return False

            


n=int(input())

L=[]

for i in range(n):
    s=input()
    L.append(s)

S=input()
ind=0
case=True

Y="<3"

for item in L:
    Y+=item
    Y+="<3"
ind=0
case=True
for item in Y:
    x=Find(ind,item)
    if(type(x)==bool):
        case=False
        break
    ind=x+1
if(case):
    print("yes")
else:
    print("no")



    
    


# intent is to get a message with heasts to the fron tand the back.
n=int(input())
words=[]
for _ in range(n):
	words.append(input())
actual = input()
expected = '<3' + '<3'.join(words) + '<3'
le=len(expected)
ie=0
for c in actual:
	if ie<le and c == expected[ie]:
		ie+=1
print('yes' if ie==le else 'no')



n = int(input())
a = '<3'
for i in range(n):
    a = a + input() + '<3'

b = input()
lenb = len(b)
for i in range(lenb):
    if not ('a' <= b[i] <= 'z' or '0' <= b[i] <= '9' or b[i] == '<' or b[i] == '>'):
        print('no')
        break
else:
    j = 0
    lena = len(a)
    for i in range(lena):
        while j < lenb and a[i] != b[j]:
            j += 1
        if j == lenb:
            print('no')
            break
        j += 1
    else: print('yes')



n = int(input())
ref = '<3'
words = []

for i in range(n):
	words.append(input())

ref = ref + '<3'.join(words) + ref

message = input()
i, j = 0, 0
while i < len(ref) and j < len(message):
	if ref[i] == message[j]:
		i += 1
	j += 1

if i == len(ref):
	print("yes")
else:
	print("no")

def f():            
    n = int(input())
    t = [input() for i in range(n)]
    p = input()
    j = 0
    for i in range(n):
        for c in '<3':
            j = p.find(c, j) + 1
            if j == 0: return 'no'
        for c in t[i]:
            j = p.find(c, j) + 1
            if j == 0: return 'no'
    for c in '<3':
        j = p.find(c, j) + 1
        if j == 0: return 'no'
    return 'yes'
print(f())

t = '<3' + '<3'.join(input() for i in range(int(input()))) + '<3'
p, s, j = input(), 'yes', 0
for c in t:
    j = p.find(c, j) + 1
    if j == 0:
        s = 'no'
        break
print(s)

words = int(input())
message = "<3"
for i in range(words):
	message+= input()
	message += "<3"
#print(message)
givenMessage = input()
i = 0
j = 0
while i<len(givenMessage):
	if givenMessage[i] == message[j]:
		j += 1
	if j == len(message):
		break
	i += 1
if j == len(message):
	print("yes")
else:
	print("no")

n = int( input() )
l = []
for i in range(n):
    l.append( input() )
s = input()
c = "<3"
for i in range(n):
    c += l[i] +"<3"

j=0
i=0
lc = len(c)
ls = len(s)
found = False
while True:
    if i==lc:
        print("yes")
        break
    if j==ls:
        print("no")
        break
    
    if c[i]==s[j]:
        i += 1
    j +=1



def a():
    n=int(input())
    a=[input() for _ in range(n)]
    s=input()
    j=s.find('<')
    i=s.find('3',j)
    for x in a:
        j=i+1
        for y in x:
            j=s.find(y,j)+1
            if j==0:
                print('no')
                return
        j=s.find('<',j)
        i=s.find('3',j)
        if not 0<=j<i:
            print('no')
            return
    print('yes')

a()

n = int(input())
a = "<3".join([""] + [input() for _ in range(n)] + [""])
s = input()
i = -1
for c in a:
  i = s.find(c, i + 1)
  if i == -1:
    print("no")
    return
print("yes")

n = int(input())
s = []
for i in range(n):
    s.append(input())
s = "<3".join([""]+s+[""])
text = input()
i = 0
for ch in s:
    while i<len(text) and text[i]!=ch:
        i += 1
    if i >= len(text):
        print("no")
        return
    i += 1
print("yes")


n=int(input())
text=""

for _ in range(n):
    temp=input()
    text=text+"<3"
    text=text+temp
text=text+"<3"

tocmp=input()

j=0
for ch in tocmp:
    if ch==text[j]:
        j+=1
    if j==len(text):
        break

if j==len(text):
    print("yes")
else:
    print("no")


#!/usr/bin/env python3
n = int(input())
ts = [input() for i in range(n)]
t = '<3' + '<3'.join(ts) + '<3'
s = input()
i = 0
j = 0
while i < len(t) and j < len(s):
    if t[i] == s[j]:
        i += 1
    j += 1
print(i == len(t) and 'yes' or 'no')


def main():
    from sys import stdin
    l = stdin.read().splitlines()
    sms = iter(l[-1])
    l[0] = l[-1] = ''
    good = set("abcdefghijklmnopqrstuvwxyz0123456789<>")
    try:
        for a in "<3".join(l):
            b = next(sms)
            while b != a:
                b = next(sms)
                if b not in good:
                    print('no')
                    return
    except StopIteration:
        print('no')
    else:
        try:
            while True:
                b = next(sms)
                if b not in good:
                    print('no')
                    return
        except StopIteration:
            print('yes')


def __starting_point():
    main()

__starting_point()

def main():
    from sys import stdin
    l = stdin.read().splitlines()
    sms = iter(l[-1])
    l[0] = l[-1] = ''
    try:
        for a in "<3".join(l):
            b = next(sms)
            while b != a:
                b = next(sms)
    except StopIteration:
        print('no')
    else:
        print('yes')


def __starting_point():
    main()

__starting_point()

def main():
    from sys import stdin
    l = stdin.read().splitlines()
    sms = iter(l[-1])
    l[0] = l[-1] = ''
    try:
        for c in "<3".join(l):
            while next(sms) != c:
                pass
    except StopIteration:
        print('no')
    else:
        print('yes')


def __starting_point():
    main()

__starting_point()

a='<3'
for _ in range(int(input())):a+=input()+'<3'
b=input()
i,j,c,d=0,0,len(a),len(b)
while i<c and j<d:
    if a[i]==b[j]:
        i+=1
        j+=1
    else:j+=1
print(['no','yes'][i==c])

def werify_message(words, message):
    true_message = ''.join(['<3', '<3'.join(words), '<3'])

    # index in true_message
    i = 0
    for litera in message:
        if len(true_message) != i:
            if litera == true_message[i]:
                i += 1
        else:
            # Дошли до конца исходного сообщения и не нашли вставок
            return 'yes'
                
    if i == len(true_message):
        return 'yes'
    else:
        return 'no'

n = int(input())
words = list()
for i in range(n):
    word = input()
    words.append(word)

message = input()
print(werify_message(words, message))

n = int(input())
s = '<3' + '<3'.join([input() for i in range(n)]) + '<3'
res = input()
k = 0
for c in res:
    if len(s)>k and s[k] == c:
        k+=1
if len(s)>k:
    print("no")
else:
    print("yes")