#include<bits/stdc++.h> #define int long long using namespace std; const int N = 2e5 + 10; struct ODT{ int l, r, val; ODT(int a, int b = -1, int c = 0){ l = a, r = b, val = c; } bool operator < (const ODT & o) const{ return l < o.l; } }; set<ODT> cht; auto split(int pos){ auto it = cht.lower_bound(pos); if(it != cht.end() && it -> l == pos) return it; it--; int l = it -> l, r = it -> r, val = it -> val; cht.insert(ODT(l, pos - 1, val)); return cht.insert(ODT(pos, r, val)).first; } void assign(int l, int r, int val){ auto itr = split(r + 1), itl = split(l); cht.erase(itl, itr); cht.insert(ODT(l, r, val)); } void get_union(int l, int r){ assign(l, r, 1); } void intersection(int l, int r){ assign(0, l - 1, 0); assign(r + 1, 65535 * 2, 0); } auto subtraction(int l, int r){ assign(l, r, 0); return cht; } auto inv_subtraction(int l, int r){ assign(0, l - 1, 0); assign(r + 1, 65535 * 2, 0); int pre = l; auto itl = cht.lower_bound(l), itr = cht.lower_bound(r); while(itl != itr){ erase(it1); int l = it1 -> l, r = it1 -> r; assign(pre, l - 1, 1); assign(l, r, 0); it1++; pre = r + 1; } return cht; } void XOR(int l, int r){ set<ODT> x = } signed main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); char op; string s; cht.insert({0, 65535 * 2, 0}); while(cin >> op){ int l, r; char Lbrace, Rbrace, ts; cin >> Lbrace >> l >> ts >> r >> Rbrace; if } return 0; }