#include<cstdio>
#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
#include<set>
#include<string.h>
#include<math.h>
#include<queue>
#include<stack>
#include<unordered_map>
using namespace std;
int main(){
int N,b[1005];
while(scanf("%d",&N)!=EOF&&N!=0){
while(scanf("%d",&(b[0]))&&b[0]!=0){
queue<int>a;stack<int>c;
for(int i=0;i<N;++i)a.push(i+1);
for(int i=1;i<N;++i)scanf("%d",&(b[i]));
for(int i=0;i<N;++i){
while((c.empty()||b[i]!=c.top())&&!a.empty()){
c.push(a.front());
a.pop();
}
if(c.top()==b[i])c.pop();
else break;
}
printf("%s\n",a.empty()&&c.empty()?"Yes":"No");
}
printf("\n");
}
return 0;
}