#include<stdio.h>
#include<stdlib.h>
typedef struct BinaryTree
{
int num;
struct BinaryTree *lchild;
struct BinaryTree *rchild;
}BTree;
void CreateBTree(BTree *List)
{
int n;
scanf("%d",&n);
if(n==-1)
List=NULL;
else
{
List=(BTree*)malloc(sizeof(BTree));
List->num=n;
CreateBTree(List->lchild);
CreateBTree(List->rchild);
}
}
int judge(BTree *List)
{
if(!List)
return 1;
else if((List->lchild)&&(List->rchild))
{
if((List->num > List->lchild->num)||(List->num < List->rchild->num))
return 0;
else
return (judge(List->lchild)&&judge(List->rchild));
}
else if(List->lchild && !List->rchild)
{
if(List->num > List->lchild->num)
return 0;
else
return (judge(List->lchild));
}
else if(!List->rchild && List->rchild)
{
if(List->num < List->rchild->num)
return 0;
else
return (judge(List->rchild));
}
return 1;
}
int main()
{
BTree *List=NULL;
CreateBTree(List);
if(judge(List))
{
printf("yes\n");
}
else
{
printf("no\n");
}
return 0;
}