1 #include<stdio.h>
2 int main()
3 {
4 int sq[1000],a[1000];//sq为栈,a为B的出栈元素
5 int i,k,n,head;
6 while(scanf("%d",&n),n)//n为0则结束
7 {
8 while(scanf("%d",&a[0]),a[0])//a[0]=0的话表示本次数据结束
9 {
10 head=0;
11 for(i=1;i<n;i++)
12 scanf("%d",&a[i]);//输入剩余的元素
13 for(i=1,k=0;k<n;k++)
14 {
15 while(i<a[k])//i为1,2,3,4,5.....
16 sq[head++]=i++;//head始终指向栈顶的下一位
17 if(a[k]==i) i++;//此处是和A的进栈元素比较,相等的话不进栈
18 else if(head&&(a[k]==sq[head-1])) head--;//这个是和栈里的栈顶元素比较,相等的话比较下一个,直到head=0
19 else{
20 puts("No");//栈空或者a[k]!=栈顶元素即不符合出栈情况
21 break;
22 }
23 }
24 if(k==n) puts("Yes");
25 else continue;
26 }
27 printf("\n");//即当a[0]=0时进行下一个数据输出要空行
28 }
29 return 0;
30 }