小丁丁学网络

Time Limit: 5000s

Memory Limit: 128M

Description

最近小丁丁在研究计算机网络的协议。他想自己建立一种新的协议。小丁丁是一个想做就做的人,所以他就开始着手设计了。期间,他遇到了一些关于数据包压缩和MTU的问题。

最大传输单元(Maximum Transmission Unit,MTU)是指一种通信协议的某一层上面所能通过的最大数据包大小(以字节为单位)。最大传输单元这个参数通常与通信接口有关(网络接口卡、串口等)。因特网协议允许IP分片,这样就可以将数据报分成足够小的片段以通过那些最大传输单元小于该数据报原始大小的链路了。这一分片过程发生在 IP 层(OSI模型的第三层,即网络层),它使用的是将分组发送到链路上的网络接口的最大传输单元的值。原始分组的分片都被加上了标记,这样目的主机的 IP 层就能将分组重组成原始的数据报了。在因特网协议中,一条因特网传输路径的“路径最大传输单元”被定义为从源地址到目的地址所经过“路径”上的所有IP跳的最大传输单元的最小值。或者从另外一个角度来看,就是无需进一步分片就能穿过这条“路径”的最大传输单元的最大值。

在小丁丁的协议中,一个数据包是只包含小写字母的字符串。由于网络MTU的限制,一个字符串不能太大。所以小丁丁的协议中将这一个字符串分割成了若干个小串。小丁丁是一个追求卓越的人。仅仅将字符串切割远不能满足他的要求。在切分字符串的时候他还同时想将字符串进行压缩。压缩用的是一个很奇葩的方法。每个字符串S被分割成s[1],s[2]...s[n],这些被分割的字符串包含小写字母和数字。字母就是原字符串S中的部分内容。数字表示这个地方在解压缩的时候由序号为这个数字的子串替换。比如s[1]=”abc2”,这个2表示由s[2]替换。为了保证正确性,s[i]子串中,数字只能为i+1到N。为了满足MTU的限制,所以每个子串的长度必须不大于limit[i]。这种压缩算法毕竟只是小丁丁在吃饭的时候无意中想的,所以可行性有待验证。所以想请你帮忙写个程序来检验一下,对于一个长字符串S,是否存在可行的按照上述要求的,符合长度限制的切分方案。也就是说,按照上述过程的逆过程,能将这些子字符串还原成原字符串。

Input

多组数据,对于每组数据:

第一行N,1 ≤ N ≤ 6,表示子串的个数。

第二行N个数,表示对应子串的长度限制limit[i],1 ≤ limit[i] ≤ 6。

第三行一个字符串,表示原字符串。

最后以EOF结尾。

Output

如果存在这样的切分方案,输出“Yes”,否则“No”

Sample Input

1
1
abcdefg
4
4 4 4 4
abcdefg

Sample Output

No
Yes

Hint

None

Source

maemual

提交代码