label 1;
var a,b,c:array[0..100]of integer;n,i,j,k:integer;
function yes:boolean;
var l:integer;
begin
 yes:=true;
 for l:=1 to j-1 do
  if a[l]=c[i]then exit(false)
end;
begin
 readln(n);
 while n>0 do
  begin
   fillchar(a,sizeof(a),0);
   for i:=1 to n do
    begin
     b[i]:=i;
     read(c[i])
    end;
   a[1]:=1;
   k:=2;
   j:=1;
   for i:=1 to n do
    begin
     if yes then
      while a[j]<>c[i]do
       begin
        inc(j);
        a[j]:=b[k];
        inc(k)
       end else
      begin writeln('No');goto 1 end;
     a[j]:=0;
     dec(j)
    end;
   if (a[1]=0)and(a[2]=0)then writeln('Yes');
   1:
   readln(n)
  end
end.
/**************************************************************
	Problem: 2119
	User: admin
	Language: Pascal
	Result: Wrong Answer
****************************************************************/