Điều hướng chính

Nhắn tin NQ Coding

Ngôn ngữ

Phím tắt

/
Chuyển đến ô tìm bài
g p
Đi đến bài tập
g c
Đi đến kỳ thi
g u
Đi đến người dùng
?
Mở trợ giúp phím tắt

Bài tập dpbitmaskxor

XOR

Dễ Thao tác bitQuy hoạch động trạng tháiTrie

  • 100 Điểm
  • 1.0s Thời gian
  • 256M Bộ nhớ
  • 0% Tỉ lệ AC
  • 0 Số AC

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

Chưa có bình luận nào.