#include <stdio.h>
#include <stdlib.h>
typedef struct {
    int data;
    struct Node*prev;
    struct Node*next;
}Node;
void append(Node** head,Node** tail,int value){
    Node* newNode=(Node*)malloc(sizeof(Node));
    newNode->data=value;
    newNode->next=NULL;
    newNode->prev=NULL;
    if(*head==NULL){
        *head=newNode;
        *tail=newNode;
    }
    else{
        newNode->prev=*tail;
        (*tail)->next=newNode;
        *tail=newNode;
    }
}
int main(){
    Node *head=NULL,*tail=NULL;
    int x;
    while(scanf("%d",&x)==1 && x!=1){
        append(&head,&tail,x);
    }
    Node*left=head,*right=tail;
    int is_palindrome=1;
    while(left && right && left!=right && right->next !=left){
        if(left->data!= right->data){
            is_palindrome=0;
            break;
        }
        left=left->next;
        right=right->prev;
    }
    printf("%s",is_palindrom? "Yes":"No");
    return 0;
}