Bike loves looking for the second maximum element in the sequence. The second maximum element in the sequence of distinct numbers x1, x2, ..., xk (k > 1) is such maximum element xj, that the following inequality holds: <image>.

The lucky number of the sequence of distinct positive integers x1, x2, ..., xk (k > 1) is the number that is equal to the bitwise excluding OR of the maximum element of the sequence and the second maximum element of the sequence.

You've got a sequence of distinct positive integers s1, s2, ..., sn (n > 1). Let's denote sequence sl, sl + 1, ..., sr as s[l..r] (1 ≤ l < r ≤ n). Your task is to find the maximum number among all lucky numbers of sequences s[l..r].

Note that as all numbers in sequence s are distinct, all the given definitions make sence.

Input

The first line contains integer n (1 < n ≤ 105). The second line contains n distinct integers s1, s2, ..., sn (1 ≤ si ≤ 109).

Output

Print a single integer — the maximum lucky number among all lucky numbers of sequences s[l..r].

Examples

Input

5
5 2 1 4 3


Output

7


Input

5
9 8 3 5 7


Output

15

Note

For the first sample you can choose s[4..5] = {4, 3} and its lucky number is (4 xor 3) = 7. You can also choose s[1..2].

For the second sample you must choose s[2..5] = {8, 3, 5, 7}.


import java.io.*;
import java.util.*;
/**
 *
 * @author Do Quoc bao
 */
public class ProblemD {
    public static void main(String[] args) throws java.lang.Exception {
	in.init(System.in);
	int n=in.nextInt(),i,j;
	int[] arr=new int[n];for (i=0;i<n;++i) arr[i]=in.nextInt();
	int[] posNextLarger=new int[n];for (i=0;i<n;++i) posNextLarger[i]=-1;
	Stack<Integer> stack=new Stack<>();
	stack.push(0);
	for (i=1;i<n;++i) {
	    if (!stack.isEmpty()) while (arr[i]>arr[stack.peek()]) {
		posNextLarger[stack.pop()]=i;
		if (stack.isEmpty()) break;
	    }
	    stack.push(i);
	}
	int kq=0;
	i=0;
	while (i<n-1) {
	    j=i+1;
	    int dem=0;
	    if (arr[j]>arr[i]) ++dem;
	    while (j<n) {
		kq=Math.max(kq, arr[i]^arr[j]);
		if (posNextLarger[j]==-1) break;
		j=posNextLarger[j];if (arr[j]>arr[i]) ++dem;
		if (dem==2) break;
	    }
	    ++i;
	}
	System.out.println(kq);
    }
}

/**/
class in {
    static BufferedReader reader;
    static StringTokenizer tokenizer;
    static void init(InputStream input) {
        reader = new BufferedReader(
                     new InputStreamReader(input) );
        tokenizer = new StringTokenizer("");
    }
    static String next() throws IOException {
        while ( ! tokenizer.hasMoreTokens() ) {
            
            tokenizer = new StringTokenizer(
                   reader.readLine() );
        }
        return tokenizer.nextToken();
    }
    static int nextInt() throws IOException {
        return Integer.parseInt( next() );
    }
    static double nextDouble() throws IOException {
        return Double.parseDouble( next() );
    }
}
/**/