Cho một dãy số gồm \(n\) số. Ta cần chia dãy trên thành một số đoạn rời nhau sao cho giá trị của các đoạn đó là lớn nhất và tất cả các số trong dãy đều phải được chia vào các đoạn.
Một đoạn được định nghĩa bởi một cặp \((L, R)\) gồm các số trong đoạn từ \(L\) tới \(R\) (\(L \leq R\)), có giá trị bằng \(A_L \ \text{XOR} \ A_R\). Tìm cách chia sao cho tổng giá trị các đoạn là lớn nhất.
Input
-
Dòng đầu tiên là số nguyên \(n\) (\(1 \le n \le 10^5\)).
-
Dòng thứ hai gồm \(n\) số nguyên \(A_1, A_2, \ldots, A_n\) (\(0 \le A_i \le 2 \times 10^5\)).
Output
In ra một số là giá trị lớn nhất.
Example
Input:
3
1 2 3
Output:
3
Note
Với \(n = 3\), dãy \(A = [1, 2, 3]\). Chia dãy thành hai đoạn \((1, 2)\) và \((3, 3)\): đoạn \((1,2)\) có giá trị \(A_1 \ \text{XOR} \ A_2 = 1 \ \text{XOR} \ 2 = 3\); đoạn \((3,3)\) có giá trị \(A_3 \ \text{XOR} \ A_3 = 0\). Tổng giá trị là \(3 + 0 = 3\), đây là cách chia tối ưu.
Bình luận
Đăng nhập để bình luận
Chưa có bình luận nào.