#include <iostream>
#include <stdlib.h>
#include <stdio.h>
using namespace std;
typedef struct node{
int info;
node* lchild;
node* rchild;
}node,*Pnode;
Pnode creatnode(){
int c;
Pnode p;
cin>>c;
if(c==-1) p=NULL;
else{
p=(Pnode)malloc(sizeof(node));
p->info=c;
p->lchild=creatnode();
p->rchild=creatnode();
}
return p;
} //先序创建二叉树
int isBSTree(Pnode t){
if(t->lchild==NULL&&t->rchild==NULL) return 1;
else if(t->lchild==NULL) {
if(t->rchild->info>t->info) {
return isBSTree(t->lchild);
}
else return 0;
}
else if(t->rchild==NULL) {
if(t->lchild->info<t->info) {
return isBSTree(t->lchild);
}
else return 0;
}
else{
if(t->lchild->info<t->info&&t->rchild->info>t->info) {
return (isBSTree(t->lchild)&&isBSTree(t->rchild));
}
else return 0;
}
}
void printnode(Pnode t){
if(t) {
cout<<t->info;
printnode(t->lchild);
printnode(t->rchild);
}
}
int main(){
Pnode gen=(Pnode)malloc(sizeof(node));
gen=creatnode();
// cout<<"lalalal"<<endl;
int flag=isBSTree(gen);
if(flag==1) cout<<"yes"<<endl;
else cout<<"no"<<endl;
}