#include
using namespace std;
#define upMax(a,b) {
if (a < b)
a = b;
}
#define upMin(a,b) {
if (a > b)
a = b;
}
struct kdnode { int p[2], a[2][2], v, s; kdnode *ch[2]; inline void update() { a[0][0] = a[1][0] = p[0]; a[0][1] = a[1][1] = p[1]; s = v; if (ch[0]) { upMin(a[0][0], ch[0]-> a[0][0]); upMin(a[0][1], ch[0]-> a[0][1]); upMax(a[1][0], ch[0]-> a[1][0]); upMax(a[1][1], ch[0]-> a[1][1]); s += ch[0]-> s; } if (ch[1]) { upMin(a[0][0], ch[1]-> a[0][0]); upMin(a[0][1], ch[1]-> a[0][1]); upMax(a[1][0], ch[1]-> a[1][0]); upMax(a[1][1], ch[1]-> a[1][1]); s += ch[1]-> s; } } };
const int maxn = 200009;
int n, lans, qa[2], qb[2], qv, cmpx; kdnode nbuf_arr[maxn], *nbuf(nbuf_arr), *krt;
inline bool xCmp(int* a, int* b) { if (a[cmpx] == b[cmpx]) return a[cmpx ^ 1] < b[cmpx ^ 1]; else return a[cmpx] < b[cmpx]; }
kdnode* kdIns(kdnode* p) { cmpx ^= 1; if (!p) { p = nbuf ++; p-> p[0] = qa[0], p-> p[1] = qa[1]; p-> v = p-> s = qv; p-> ch[0] = p-> ch[1] = 0; } else if (qa[0] == p-> p[0] && qa[1] == p-> p[1]) { p-> v += qv; p-> s += qv; } else { int d(xCmp(qa, p-> p) ^ 1); p-> ch[d] = kdIns(p-> ch[d]); } p-> update(); cmpx ^= 1; return p; }
inline bool outRect(kdnode* p) { return qa[0] > p-> a[1][0] || qa[1] > p-> a[1][1] || qb[0] < p-> a[0][0] || qb[1] < p-> a[0][1]; } inline bool inRect(kdnode* p) { return qa[0] <= p-> a[0][0] && qa[1] <= p-> a[0][1] && qb[0] >= p-> a[1][0] && qb[1] >= p-> a[1][1]; }
void kdQry(kdnode* p) { if (!p || outRect(p)) return; else if (inRect(p)) qv += p-> s; else { if (p-> p[0] >= qa[0] && p-> p[0] <= qb[0] && p-> p[1] >= qa[1] && p-> p[1] <= qb[1]) qv += p-> v; kdQry(p-> ch[0]), kdQry(p-> ch[1]); } }
int main() { #ifndef ONLINE_JUDGE freopen(".in", “r”, stdin); #endif
cmpx = 0;
scanf("%d", &n);
krt = 0;
lans = 0;
for (int opt; scanf("%d", &opt), opt < 3; )
if (opt == 1) {
scanf("%d%d%d", qa, qa + 1, &qv);
qa[0] ^= lans, qa[1] ^= lans, qv ^= lans;
krt = kdIns(krt);
}
else {
scanf("%d%d%d%d", qa, qa + 1, qb, qb + 1);
qa[0] ^= lans, qa[1] ^= lans;
qb[0] ^= lans, qb[1] ^= lans;
qv = 0;
kdQry(krt);
printf("%d\n", (lans = qv));
}
}