Module: 보르


Problem

9 /10


다중 집합 및 XOR

Problem

q 쿼리와 처음에 숫자 0만 포함하는 다중 집합 A가 있습니다. 쿼리에는 세 가지 유형이 있습니다.
  • +x — 다중 집합 A에 숫자 x를 추가합니다.
  • -x — 다중 집합 A에서 숫자 x의 한 항목을 제거합니다. 현재 다중 집합에 적어도 하나의 숫자 x가 있음을 보장합니다.
  • <리><강>? x — 숫자 x가 주어지면 다중 집합 A에서 숫자 x와 일부 숫자 y의 최대 비트 배타적 OR(XOR이라고도 함)을 계산해야 합니다.
다중 세트 – 이는 여러 개의 동일한 요소를 허용하는 집합입니다.

입력:
입력의 첫 번째 줄에는 숫자 q(1 ≤ q ≤ 200000) — Vasiliy가 처리해야 하는 요청 수입니다.

입력의 다음 q 줄 각각에는 세 문자 "+", "-" 중 하나가 포함됩니다. 또는 "?" 및 xi(1 ≤ xi ≤ 109). 입력에 쿼리 "?"가 하나 이상 있음을 보장합니다.

다중 집합에는 숫자 0이 항상 표시됩니다.

출력:
"?"와 같은 모든 요청에 ​​대해 단일 정수 인쇄 — 숫자 xi와 다중집합 A의 숫자에 대한 비트별 XOR의 최대값.

예:
  <몸>
입력 출력
10
+8
+9
+11
+ 6
+ 1
? 3
- 8
? 3
? 8
? 11
11
10
14
13