#include <iostream>
#include <cstdio>
#include <stack>
using namespace std;
int N;
int order[1000+2];
stack<int>st;
bool Work(){
int i = 1, j = 0;
while(i<=N){
if(order[j]!=i && order[j]!=st.top()) st.push(i++);
else if(order[j]==i) ++i, ++j;
else if(order[j]==st.top()) st.pop(), ++j;
}
while(!st.empty()){
if(j==N || st.top()==0) return true;
if(st.top()!=order[j]) return false;
st.pop();
++j;
}
}
bool read(){
scanf("%d", &N);
if(N==0) return false;
while(true){
scanf("%d", order);
if(*order==0){
printf("\n");
return true;
}
else for(int i = 1; i<N; ++i) scanf("%d", order+i);
st.push(0);
if(Work())printf("Yes\n");
else printf("No\n");
}
}
int main() {
while(read());
return 0;
}