import java.util.HashMap;
import java.util.Scanner;
public class Main {
static int result = 0;
public static class TreeNode{
int id;
int value;
int left_id;
int right_id;
TreeNode left;
TreeNode right;
public TreeNode() {
}
public TreeNode(int id, int value) {
this.id = id;
this.value = value;
}
public TreeNode(int id, int value, int left_id, int right_id) {
this.id = id;
this.value = value;
this.left_id = left_id;
this.right_id = right_id;
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
HashMap<Integer,TreeNode> map = new HashMap<>();
for(int i =0;i<n;i++){
int node_id = sc.nextInt();
int node_value = sc.nextInt();
int left_id = sc.nextInt();
int right_id = sc.nextInt();
TreeNode treeNode = new TreeNode(node_id,node_value,left_id,right_id);
map.put(node_id,treeNode);
}
for(Integer key:map.keySet()){
TreeNode treeNode = map.get(key);
if(treeNode.left_id!=-1){
treeNode.left = map.get(treeNode.left_id);
}
if(treeNode.right_id!=-1){
treeNode.right = map.get(treeNode.right_id);
}
}
for(Integer key:map.keySet()){
TreeNode treeNode = map.get(key);
dfs(treeNode,0);
}
System.out.println(result);
}
public static void dfs(TreeNode node,int value){
if(node==null){
return;
}
value = value^node.value;
if(value>result){
result = value;
}
dfs(node.left,value);
dfs(node.right,value);
}
}