Bike loves looking for the second maximum element in the sequence. The second maximum element in the sequence of distinct numbers *x*<sub class="lower-index">1</sub>, *x*<sub class="lower-index">2</sub>, ..., *x*<sub class="lower-index">*k*</sub> (*k* &gt; 1) is such maximum element *x*<sub class="lower-index">*j*</sub>, that the following inequality holds: <img align="middle" class="tex-formula" src="https://espresso.codeforces.com/41e9a774451aa769280692592b29103e0a6ecf97.png" style="max-width: 100.0%;max-height: 100.0%;"/>.

The lucky number of the sequence of distinct positive integers *x*<sub class="lower-index">1</sub>, *x*<sub class="lower-index">2</sub>, ..., *x*<sub class="lower-index">*k*</sub> (*k* &gt; 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 *s*<sub class="lower-index">1</sub>, *s*<sub class="lower-index">2</sub>, ..., *s*<sub class="lower-index">*n*</sub> (*n* &gt; 1). Let's denote sequence *s*<sub class="lower-index">*l*</sub>, *s*<sub class="lower-index">*l* + 1</sub>, ..., *s*<sub class="lower-index">*r*</sub> as *s*[*l*..*r*] (1 ≤ *l* &lt; *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.
The first line contains integer *n* (1 &lt; *n* ≤ 10<sup class="upper-index">5</sup>). The second line contains *n* distinct integers *s*<sub class="lower-index">1</sub>, *s*<sub class="lower-index">2</sub>, ..., *s*<sub class="lower-index">*n*</sub> (1 ≤ *s*<sub class="lower-index">*i*</sub> ≤ 10<sup class="upper-index">9</sup>).
# second large number, monotonic decreasing stack
n = input()
vals = list(map(int, input().split()))
r = 0
q = []
for val in vals:
    while q:
        # q[-1] will keep track the second max 
        # print(q, val, q[-1])
        r = max(r, val ^ q[-1]) 
        # the last of q, is always the smallest for the sequence we have so far
        # and it satisfy the idea of second max
        if val > q[-1]:
            q.pop()
        else:
            break
    q.append(val)
print(r)

# while keep tracking the monotonic decreasing stack
# Let vals[i] be the second maximum element of some subarray 
# then the maximum element can be the first element larger than vals[i]
# Given an array arr[] of N distinct positive integers, let’s denote max(i, j) and secondMax(i, j) as the maximum and the second maximum element of the subarray arr[i…j]. 
# while we are popping we find al are subarrays
# for instance
# if q = 5, 3, 2 and val = 4
# whilie we popping
# we first tried 2, 4 => this is array [2,4]
# then 2 get popped, we tried 3, 4 this is for array [3, 2, 4], where 4 is largest and 3 is second largest 
# and so force...