#BST0000008. Xóa nút lá (Delete a Leaf from a BST)

Xóa nút lá (Delete a Leaf from a BST)

Xóa nút lá (Delete a Leaf from 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. Khóa trùng bị bỏ qua.

Cho khóa xx được bảo đảm tồn tại và nút mang khóa xx là một nút lá, nghĩa là nút đó không có con trái và cũng không có con phải.

Hãy xóa nút mang khóa xx khỏi cây, sau đó in preorder của cây còn lại. Preorder thăm gốc trước, tiếp theo là cây con trái, rồi cây con phải.

Nếu xx là nút duy nhất của cây thì sau khi xóa, cây trở thành rỗng.

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 khóa xx cần xóa.

Output

Nếu cây sau khi xóa còn nút, in dãy khóa theo preorder trên một dòng, các khóa cách nhau bởi một dấu cách.

Nếu cây trở thành rỗng, in EMPTY.

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; xx tồn tại và nút mang khóa xx có đúng 00 con.

Ví dụ

Input

7
8 3 10 1 6 14 4
4

Output

8 3 1 6 10 14

Giải thích

Trong BST được tạo ra, nút 44 là con trái của nút 66 và không có con nào, nên 44 là một nút lá. Sau khi xóa nút 44, các liên kết còn lại của cây không đổi.

Duyệt preorder cây mới cho dãy 8 3 1 6 10 14.