//注意输出格式
//栈模拟flag推进比较决策
#include<iostream>
#include<cstdio>#include<stack>
using namespace std;
int a,shz[1005];
int main(){
while(cin>>a&&a){
while(scanf("%d",&shz[1])&&shz[1]){
for(int i=2;i<=a;i++){
cin>>shz[i];
}
stack<int> stk;
int A=1,B=1;
int jud=1;
while(B<=a){
if(A==shz[B]){
A++;
B++;
}
else if(!stk.empty()&&stk.top()==shz[B]){
stk.pop();
B++;
}
else if(A<=a) stk.push(A++);
else{
jud=0;
break;
}
}
printf("%s\n", jud? "Yes":"No");
}
printf("\n");
}
return 0;
}