Max xor subarray ,,test case 1 error why?

#include
#include<bits/stdc++.h>
using namespace std;
class node{
public:
int data;
node* left;
node* right;

	node(int val){
		data=val;
		left=NULL;
		right=NULL;
	} 

};
class trie{
node * root;
public:
trie(){
root=new node(-1);
}
void insert(int n){
node * temp=root;
for(int i=31;i>=0;iā€“){
int digit=(n>>i) & 1 ;
if(digit==0){
if(temp->left!=NULL){
temp=temp->left;
}
else{
temp->left=new node(0);
temp=temp->left;
}
}
else{
if(temp->right!=NULL){
temp=temp->right;
}
else{
temp->right=new node(0);
temp=temp->right;
}
}
}

}
int max_xor_helper (int x){ 				// helper function to find max xor
	int curr_ans=0;
	node * temp=root;
	for(int i=31;i>=0;i--){
		int digit=(x>>i)& 1;
		if(digit==0){
			// find bit 1
			if(temp->right!=NULL){
					temp=temp->right;
					curr_ans+=(1<<i);
			}
			else{
			temp=temp->left;
			}
		}
		else{
		if(temp->left!=NULL){
					temp=temp->left;
					curr_ans+=(1<<i);
			}
			else{
			temp=temp->right;
			}
	}
	}
	
	return curr_ans;
}
int max_xor(int arr[],int n){
	int max_xor=INT_MIN;
	for(int i=0;i<n;i++){
		insert(arr[i]);
		int curr_xor=max_xor_helper(arr[i]);
		
		max_xor=max(max_xor,curr_xor);
	}

	return max_xor;
}

};
int main() {
int n;
cin>>n;
int arr[n];
if(n==1){
cout<<0<<endl;
return 0;
}
for(int i=0;i<n;i++){

	cin>>arr[i]; 
}
trie t;
cout<<t.max_xor(arr,n)<<endl;

}

hi @kumawatnitesh093 refer