#BST0000007. Predecessor trong BST (Inorder Predecessor in a BST)

Predecessor trong BST (Inorder Predecessor in a BST)

Predecessor trong BST (Inorder Predecessor in a BST)

Nguồn: Phước Hưng OJ

Phiên bản: Phước Hưng OJ Extended

Đề bài

Dựng BST từ dãy a1,a2,…,ana_1,a_2,\ldots,a_n theo đúng thứ tự chèn; nếu một khóa đã có trong cây thì lần chèn lặp lại bị bỏ qua.

Cho một khóa xx được bảo đảm tồn tại trong cây. Inorder predecessor nghiêm ngặt của xx là khóa lớn nhất trong BST có giá trị nhỏ hơn xx.

Hãy tìm inorder predecessor nghiêm ngặt của xx. Nếu không có khóa nào nhỏ hơn xx, predecessor không tồn tại.

Input

Dòng đầu chứa số nguyên nn.

Dòng thứ hai chứa nn số nguyên a1,a2,…,ana_1,a_2,\ldots,a_n theo thứ tự chèn.

Dòng thứ ba chứa số nguyên xx.

Output

Nếu predecessor của xx tồn tại, in khóa đó.

Nếu không tồn tại, in NONE.

Subtask

Subtask 1 (20 điểm): 1≤n≤201\le n\le 20.

Subtask 2 (30 điểm): 1≤n≤50001\le n\le 5000.

Subtask 3 (50 điểm): 1≤n≤2000001\le n\le 200000.

Trong tất cả các subtask, aia_i và xx là số nguyên có dấu 64-bit; khóa trùng bị bỏ qua khi dựng cây và xx được bảo đảm thuộc tập khóa còn lại của BST.

Ví dụ

Input

7
8 3 10 1 6 14 4
6

Output

4

Giải thích

Các khóa nhỏ hơn 66 trong cây là 1,3,41,3,4. Trong số đó, khóa lớn nhất là 44. Vì vậy inorder predecessor nghiêm ngặt của 66 là 44.