400+资料第五波
//1
/*
#include<stdio.h>
#include<stdlib.h>
int binary(int x,int b[],int len){
int left=0,right=len;
while(left<=right){
int mid=(left+right)/2;
if(x==b[mid]){
return 0;
}
else if(x<b[mid])right=mid-1;
else left=mid+1;
}
return 1;
}
int cmp(const void *a,const void *b){
return *(int *)a-*(int *)b;
}
int main(){
int a[100],b[100],x,i,j,k,p;
k=0;
while(~scanf("%d",&x)&&x!=-1){
a[k++]=x;
}
p=k;
k=0;
while(~scanf("%d",&x)&&x!=-1){
b[k++]=x;
}
qsort(b,k,sizeof(b[0]),cmp);
for(i=0;i<p;i++){
if(binary(a[i],b,k)){
printf("%d ",a[i]);
}
}
printf("\n");
return 0;
}
*/
//2
/*
#include<stdio.h>
void itob(int n,char *s,int b){
int i=0,j=0,t=0,fuhao=1;
if(n<0){
n=-n;
fuhao=0;
}
while(n){
s[i]=n%b+'0';
if(s[i]>'9')s[i]+='a'-'9'-1;
i++,n/=b;
}
if(fuhao==0){//负数
s[i++]='-';
}
s[i--]='\0';
for(;i>j;i--,j++){
t=s[i];
s[i]=s[j];
s[j]=t;
}
}
int main(){
int n,b;
char s[1000];
scanf("%d%d",&n,&b);
itob(n,s,b);
printf("%s\n",s);
return 0;
}
*/
//3
/*
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
double getlen(double x1,double y1,double x2,double y2){
return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}
double getarea(int n,double x[],double y[]){
double area=0,a,b,c,t;
for(int i=2;i<n;i++){
a=getlen(x[0],y[0],x[i],y[i]);
b=getlen(x[0],y[0],x[i-1],y[i-1]);
c=getlen(x[i],y[i],x[i-1],y[i-1]);
t=(a+b+c)/2;
area+=sqrt(t*(t-a)*(t-b)*(t-c));
}
return area;
}
int main(){
int n,i;
double x[50],y[50];
scanf("%d",&n);
for(i=0;i<n;i++)scanf("%lf%lf",&x[i],&y[i]);
printf("%.2lf\n",getarea(n,x,y));
return 0;
}
*/
//4
/*
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
int main(){
char str[300],tmp;
int i,j,n;
scanf("%s%d",str,&n);
int len=strlen(str);
for(i=0;i<n;i++){
for(j=0;j<len;j++){
if(str[j]>=str[j-1]&&str[j]>str[j+1]){
tmp=str[j];
while(true){
if(str[j+1]!='\0'){
tmp=str[j];str[j]=str[j+1];str[j+1]=tmp;j++;
}
if(str[j+1]=='\0'){
tmp=str[j];str[j]=str[j+1];str[j+1]=tmp;break;
}
}
break;
}
}
len--;
}
//str[len]='\0';
printf("%s\n",str);
return 0;
}
*/
//5
//6
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
int sp=0,st[1000];
void push(int t){
if(sp<1000)
st[sp++]=t;
}
int pop(){
if(sp>0)
return st[--sp];
else return 0;
}
int main(){
int n,i,j,tmp;
int a[1000],t[1000];
scanf("%d",&n);
for(i=0;i<n;i++)scanf("%d",&a[i]);
tmp=n,j=0;
for(i=n-1;i>=0;i--){
push(a[i]);
while(sp>0&&st[sp-1]==tmp){
t[j++]=pop();
tmp--;
}
}
bool ok=1;
for(i=n-1,j=0;i>=0;i--,j++)
if(t[i]!=j+1){ok=0;break;}
if(ok)printf("YES\n");
else printf("NO\n");
return 0;
}