#include <fstream>
#include <algorithm>
#include <vector>
#define int long long
using namespace std;
ifstream cin("xormax.in");
ofstream cout("xormax.out");
int mx=0, r1=100000, r2=100000;
int p;
int v[100005];
vector <int> ia;
vector <int> ib;
void rec(int k, vector <int> &a, vector <int> &b, int sum, int put)
{
//mx=max(mx, sum);
if(k==-1)
{
if(mx<sum)
{
mx=sum;
sort(a.begin(), a.end());
sort(b.begin(), b.end());
int x=0, y=0;
x=a[0];
y=b[0];
if(x>y)
{
swap(x, y);
}
r1=x;
r2=y;
}
else if(mx==sum)
{
sort(a.begin(), a.end());
sort(b.begin(), b.end());
int x=0, y=0;
x=a[0];
y=b[0];
if(x>y)
{
swap(x, y);
}
if(y<r2)
{
r1=x;
r2=y;
}
else if(y==r2)
{
if(x>r1)
{
r1=x;
}
}
}
return;
}
int ok1=0, ok2=0;
vector <int> a0;
vector <int> a1;
vector <int> b0;
vector <int> b1;
//cout<<k<<" "<<sum<<endl<<"a : ";
for(auto i:a)
{
//cout<<i<<" ";
if((v[i]>>k)%2==0)
{
a0.push_back(i);
}
else
{
a1.push_back(i);
}
}
//cout<<endl;
//cout<<"b : ";
for(auto i:b)
{
//cout<<i<<" ";
if((v[i]>>k)%2==0)
{
b0.push_back(i);
}
else
{
b1.push_back(i);
}
}
/*
cout<<endl<<"a0 : ";
for(auto i:a0)
{
cout<<i<<" ";
}
cout<<endl<<"a1 : ";
for(auto i:a1)
{
cout<<i<<" ";
}
cout<<endl<<"b0 : ";
for(auto i:b0)
{
cout<<i<<" ";
}
cout<<endl<<"b1 : ";
for(auto i:b1)
{
cout<<i<<" ";
}
cout<<endl;*/
if(b0.size()>0 && a1.size()>0)
{
ok2=1;
//rec(k-1, b0, a1, sum+p);
}
if(a0.size()>0 && b1.size()>0)
{
ok1=1;
//rec(k-1, a0, b1, sum+p);
}
if(ok1==1)
{
rec(k-1, a0, b1, sum+put/2, put/2);
}
if(ok2==1)
{
rec(k-1, b0, a1, sum+put/2, put/2);
}
if(ok1==0 && ok2==0)
{
rec(k-1, a, b, sum, put/2);
}
}
signed main()
{
int n, x;
cin>>n;
ia.push_back(0);
for(int i=1; i<=n; i++)
{
cin>>x;
v[i]=v[i-1]^x;
if((v[i]>>20)%2==0)
{
ia.push_back(i);
}
else
{
ib.push_back(i);
}
//cout<<v[i]<<" ";
}
//cout<<endl;
p=(1<<20);
if(ia.size()>0 && ib.size()>0)
{
rec(19, ia, ib, p, p);
}
else
{
for(int i=19; i>=0; i--)
{
p/=2;
ia.clear();
ib.clear();
for(int j=0; j<=n; j++)
{
if((v[j]>>i)%2==0)
{
ia.push_back(j);
}
else
{
ib.push_back(j);
}
}
if(ia.size()>0 && ib.size()>0)
{
rec(i-1, ia, ib, p, p);
break;
}
}
//rec(19, ia, ib, 0);
}
if(r1>r2)
{
swap(r1, r2);
}
if(r1==r2 && r1==100000)
{
r1=r2=1;
}
cout<<mx<<" "<<r1+1<<" "<<r2;
return 0;
}