Nitori and Stack-Tech
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

Nitori擅长制作各种各样精巧的道具。

这一天,Nitori找来n个不同的零件放在桌子上,将它们排列成一排,接着她便拿出一个被她称为“栈”的神奇道具,这个道具可以将无数多个零件放进去,并且也可以按照与放入顺序相反的顺序将零件取出来(即后放入的零件必须先取出来),并且她还可以只取出一部分后继续放入其它的零件,而不必一次性全部取完。

Nitori十分喜爱这个叫做“栈”的道具,今天,她想用“栈”将桌上的零件调整一下排列顺序,她会把桌上的零件从左到右依次放入“栈”中,并且在任意时刻,她都可以将若干个先前放进栈中的零件取出(需要按照“栈”的后入先出顺序),并从左到右在桌子上摆放出来。

她想知道是否可能将桌上物品的排列s,通过上述操作,转化为另一种排列t。


输入描述:

第一行输入一个正整数n,表示n个零件。
第二行输入一个长度为n,由不同小写字母组成的字符串s,表示初始从左到右排列的n种零件。
第三行输入一个长度为n,由不同小写字母组成的字符串t,表示Nitori希望得到的排列。

数据规范:
* .
* 所有字符串保证只含有小写字母。

输出描述:

如果能够通过“栈”将排列s变成t,则输出,反之输出。(不包含双引号,大小写任意)
示例1

输入

复制
1
a
o

输出

复制
No
示例2

输入

复制
1
c
c

输出

复制
Yes
示例3

输入

复制
7
abcedfh
aecbfdh

输出

复制
Yes

说明

如果使用u表示入栈,使用o表示出栈,则此组数据可通过操作:
uouuuooouuoouo
从s排列得到t排列。