Module: Bor


Problem

9 /10


Multiset và XOR

Problem

Bạn có q truy vấn và một bộ nhiều A ban đầu chỉ chứa số 0. Có ba loại truy vấn:
  • +x — thêm số x vào tập hợp A.
  • -x — loại bỏ một lần xuất hiện của số x khỏi nhiều tập hợp A. Đảm bảo rằng ít nhất một số x có mặt trong nhiều tập hợp tại thời điểm này.
  • ? x — bạn được cung cấp một số x, bạn cần tính OR (còn được gọi là XOR) loại trừ theo bit tối đa của số x và một số y từ tập nhiều A.
Nhiều bộ — đây là một tập hợp cho phép nhiều phần tử giống hệt nhau.

Đầu vào:
Dòng đầu tiên chứa số q (1 ≤ q ≤ 200000) — số lượng yêu cầu mà Vasiliy cần xử lý.

Mỗi q dòng sau của nội dung nhập chứa một trong ba ký tự "+", "-" hoặc "?" và số xi (1 ≤ xi ≤ 109). Đảm bảo rằng có ít nhất một truy vấn "?" trong đầu vào.

Lưu ý rằng số 0 sẽ luôn xuất hiện trong nhiều tập hợp.

Đầu ra:
Đối với mọi yêu cầu như "?" in một số nguyên duy nhất — giá trị lớn nhất của phép XOR theo bit cho số xi và bất kỳ số nào từ tập hợp nhiều A.

Ví dụ:
 
Đầu vào Đầu ra
10
+8
+9
+11
+ 6
+ 1
? 3
- 8
? 3
? 8
? 11
11
10
14
13