#include <bits/stdc++.h>
using namespace std;
struct TreeNode{
	int val;
	TreeNode* right;
	TreeNode* left;
	TreeNode(int val):left(nullptr),right(nullptr),val(val){};
};
bool sym(TreeNode* left,TreeNode* right){
	if(left == nullptr && right == nullptr)return true;
	if(left == nullptr || right == nullptr)return false;
	
	if(left->val!=right->val)return false;
	
	return sym(left->left,right->right)&&sym(left->right,right->left);
}
bool isSymm(TreeNode* root){
  
  if(root == nullptr)return true;
  return sym(root->left,root->right);
  
}
TreeNode* buildTree(){
	int x;cin>>x;
	if(x==-1)return nullptr;
	TreeNode* root = new TreeNode(x);
	
	queue<TreeNode*>q;
	q.push(root);
	
	while(!q.empty()){
		auto u = q.front();
		q.pop();
		
		if(cin>>x && x!=-1){
			u->left = new TreeNode(x);
			q.push(u->left);
		}
		
		if(cin>>x && x!=-1){
			u->right = new TreeNode(x);
			q.push(u->right);
		}
	}
	return root;
}
int main() {
    TreeNode* root = buildTree();
   
     bool ans = isSymm(root);
     cout<<ans;
    
	return 0;
}