#include <bits/stdc++.h>
using namespace std;
#define int long long
#define fi first
#define se second
#define pb push_back
#define all(x) x.begin(),x.end()
#define FOR(i,a,b) for(int i = (a), _b = b;i <= _b; i++)
#define FORD(i,a,b) for(int i = (a), _b = b;i >= _b; i--)
#define mp make_pair
#define task "covay"
template<class x,class y>
bool minimize(x &a,const y &b){
if(a > b){
a = b;
return true;
}else return false;
}
template<class x,class y>
bool maximize(x &a,const y &b){
if(a < b){
a = b;
return true;
}else return false;
}
typedef pair<int,int> pii;
constexpr int MAXN=1e6,MOD=1e9+7;
int n,m,k,l,r,ans,res;
struct info{
char type;
int la,ra,lb,rb;
int x,y;
} q[MAXN];
struct Fenwick{
vector<vector<int>> BIT,pos;
int n;
Fenwick (int _n){
n = _n;
BIT.assign(n+5,{});
pos.assign(n+5,{});
}
void fakeget(int u,int v){
int idx = u;
while(idx > 0){
pos[idx].pb(v);
idx -= (idx & -idx);
}
}
void fakeadd(int u,int v){
int idx = u;
while(idx <= n){
pos[idx].pb(v);
idx += (idx & -idx);
}
}
void compress(){
FOR(i,1,n){
sort(all(pos[i]));
pos[i].erase(unique(all(pos[i])),pos[i].end());
BIT[i].assign(pos[i].size()+5,0);
}
}
void update(int x,int y){
for(int u = x;u <= n;u += (u & -u)){
int v = upper_bound(all(pos[u]),y) - pos[u].begin();
while(v < BIT[u].size()){
BIT[u][v] += 1;
v += (v & -v);
}
}
}
int get(int x,int y){
int ans = 0;
for(int u = x;u > 0;u -= (u & -u)){
int v = upper_bound(all(pos[u]),y) - pos[u].begin();
while(v > 0){
ans += BIT[u][v];
v -= (v & -v);
}
}
return ans;
}
int qry(int la,int ra,int lb,int rb){
return get(lb,rb) - get(la-1,rb) - get(lb,ra-1) + get(la-1,ra-1);
}
};
int32_t main(){
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
if(fopen(task".inp","r")){
freopen(task".inp","r",stdin);
freopen(task".out","w",stdout);
}
cin >> n;
vector<int> val;
FOR(i,1,n){
cin >> q[i].type;
if(q[i].type == '+'){
cin >> q[i].x >> q[i].y;
val.pb(q[i].x);
val.pb(q[i].y);
}else{
cin >> q[i].la >> q[i].ra >> q[i].lb >> q[i].rb;
val.pb(q[i].la);
val.pb(q[i].ra);
val.pb(q[i].lb);
val.pb(q[i].rb);
}
}
sort(all(val));
val.erase(unique(all(val)),val.end());
FOR(i,1,n){
if(q[i].type == '+'){
q[i].x = lower_bound(all(val),q[i].x) - val.begin() + 1;
q[i].y = lower_bound(all(val),q[i].y) - val.begin() + 1;
}else{
q[i].la = lower_bound(all(val),q[i].la) - val.begin() + 1;
q[i].ra = lower_bound(all(val),q[i].ra) - val.begin() + 1;
q[i].lb = lower_bound(all(val),q[i].lb) - val.begin() + 1;
q[i].rb = lower_bound(all(val),q[i].rb) - val.begin() + 1;
}
}
m = val.size();
Fenwick tree(m);
FOR(i,1,n){
if(q[i].type == '+'){
int x = q[i].x,y = q[i].y;
tree.fakeadd(x,y);
}else{
int x1 = q[i].la,x2 = q[i].lb,y1 = q[i].ra,y2 = q[i].rb;
tree.fakeget(x2,y2);
tree.fakeget(x1-1,y2);
tree.fakeget(x2,y1-1);
tree.fakeget(x1-1,y1-1);
}
}
tree.compress();
FOR(i,1,n){
if(q[i].type == '+'){
int x = q[i].x,y = q[i].y;
tree.update(x,y);
}else{
int x1 = q[i].la,x2 = q[i].lb,y1 = q[i].ra,y2 = q[i].rb;
cout << tree.qry(x1,y1,x2,y2) << '\n';
}
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgaW50IGxvbmcgbG9uZwojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgYWxsKHgpIHguYmVnaW4oKSx4LmVuZCgpCiNkZWZpbmUgRk9SKGksYSxiKSBmb3IoaW50IGkgPSAoYSksIF9iID0gYjtpIDw9IF9iOyBpKyspCiNkZWZpbmUgRk9SRChpLGEsYikgZm9yKGludCBpID0gKGEpLCBfYiA9IGI7aSA+PSBfYjsgaS0tKQojZGVmaW5lIG1wIG1ha2VfcGFpcgojZGVmaW5lIHRhc2sgImNvdmF5Igp0ZW1wbGF0ZTxjbGFzcyB4LGNsYXNzIHk+CiAgICBib29sIG1pbmltaXplKHggJmEsY29uc3QgeSAmYil7CiAgICAgICAgaWYoYSA+IGIpewogICAgICAgICAgICBhID0gYjsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfWVsc2UgcmV0dXJuIGZhbHNlOwogICAgfQp0ZW1wbGF0ZTxjbGFzcyB4LGNsYXNzIHk+CiAgICBib29sIG1heGltaXplKHggJmEsY29uc3QgeSAmYil7CiAgICAgICAgaWYoYSA8IGIpewogICAgICAgICAgICBhID0gYjsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfWVsc2UgcmV0dXJuIGZhbHNlOwogICAgfQp0eXBlZGVmIHBhaXI8aW50LGludD4gcGlpOwpjb25zdGV4cHIgaW50IE1BWE49MWU2LE1PRD0xZTkrNzsKaW50IG4sbSxrLGwscixhbnMscmVzOwpzdHJ1Y3QgaW5mb3sKICAgIGNoYXIgdHlwZTsKICAgIGludCBsYSxyYSxsYixyYjsKICAgIGludCB4LHk7Cn0gcVtNQVhOXTsKc3RydWN0IEZlbndpY2t7CiAgICB2ZWN0b3I8dmVjdG9yPGludD4+IEJJVCxwb3M7CiAgICBpbnQgbjsKICAgIEZlbndpY2sgKGludCBfbil7CiAgICAgICAgbiA9IF9uOwogICAgICAgIEJJVC5hc3NpZ24obis1LHt9KTsKICAgICAgICBwb3MuYXNzaWduKG4rNSx7fSk7CiAgICB9CiAgICB2b2lkIGZha2VnZXQoaW50IHUsaW50IHYpewogICAgICAgIGludCBpZHggPSB1OwogICAgICAgIHdoaWxlKGlkeCA+IDApewogICAgICAgICAgICBwb3NbaWR4XS5wYih2KTsKICAgICAgICAgICAgaWR4IC09IChpZHggJiAtaWR4KTsKICAgICAgICB9CiAgICB9CiAgICB2b2lkIGZha2VhZGQoaW50IHUsaW50IHYpewogICAgICAgIGludCBpZHggPSB1OwogICAgICAgIHdoaWxlKGlkeCA8PSBuKXsKICAgICAgICAgICAgcG9zW2lkeF0ucGIodik7CiAgICAgICAgICAgIGlkeCArPSAoaWR4ICYgLWlkeCk7CiAgICAgICAgfQogICAgfQogICAgdm9pZCBjb21wcmVzcygpewogICAgICAgIEZPUihpLDEsbil7CiAgICAgICAgICAgIHNvcnQoYWxsKHBvc1tpXSkpOwogICAgICAgICAgICBwb3NbaV0uZXJhc2UodW5pcXVlKGFsbChwb3NbaV0pKSxwb3NbaV0uZW5kKCkpOwogICAgICAgICAgICBCSVRbaV0uYXNzaWduKHBvc1tpXS5zaXplKCkrNSwwKTsKICAgICAgICB9CiAgICB9CiAgICB2b2lkIHVwZGF0ZShpbnQgeCxpbnQgeSl7CiAgICAgICAgZm9yKGludCB1ID0geDt1IDw9IG47dSArPSAodSAmIC11KSl7CiAgICAgICAgICAgIGludCB2ID0gdXBwZXJfYm91bmQoYWxsKHBvc1t1XSkseSkgLSBwb3NbdV0uYmVnaW4oKTsKICAgICAgICAgICAgd2hpbGUodiA8IEJJVFt1XS5zaXplKCkpewogICAgICAgICAgICAgICAgQklUW3VdW3ZdICs9IDE7CiAgICAgICAgICAgICAgICB2ICs9ICh2ICYgLXYpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgaW50IGdldChpbnQgeCxpbnQgeSl7CiAgICAgICAgaW50IGFucyA9IDA7CiAgICAgICAgZm9yKGludCB1ID0geDt1ID4gMDt1IC09ICh1ICYgLXUpKXsKICAgICAgICAgICAgaW50IHYgPSB1cHBlcl9ib3VuZChhbGwocG9zW3VdKSx5KSAtIHBvc1t1XS5iZWdpbigpOwogICAgICAgICAgICB3aGlsZSh2ID4gMCl7CiAgICAgICAgICAgICAgICBhbnMgKz0gQklUW3VdW3ZdOwogICAgICAgICAgICAgICAgdiAtPSAodiAmIC12KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gYW5zOwogICAgfQogICAgaW50IHFyeShpbnQgbGEsaW50IHJhLGludCBsYixpbnQgcmIpewogICAgICAgIHJldHVybiBnZXQobGIscmIpIC0gZ2V0KGxhLTEscmIpIC0gZ2V0KGxiLHJhLTEpICsgZ2V0KGxhLTEscmEtMSk7CiAgICB9Cn07CmludDMyX3QgbWFpbigpewogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZSgwKTtjb3V0LnRpZSgwKTsKICAgIGlmKGZvcGVuKHRhc2siLmlucCIsInIiKSl7CiAgICAgICAgZnJlb3Blbih0YXNrIi5pbnAiLCJyIixzdGRpbik7CiAgICAgICAgZnJlb3Blbih0YXNrIi5vdXQiLCJ3IixzdGRvdXQpOwogICAgfQogICAgY2luID4+IG47CiAgICB2ZWN0b3I8aW50PiB2YWw7CiAgICBGT1IoaSwxLG4pewogICAgICAgIGNpbiA+PiBxW2ldLnR5cGU7CiAgICAgICAgaWYocVtpXS50eXBlID09ICcrJyl7CiAgICAgICAgICAgIGNpbiA+PiBxW2ldLnggPj4gcVtpXS55OwogICAgICAgICAgICB2YWwucGIocVtpXS54KTsKICAgICAgICAgICAgdmFsLnBiKHFbaV0ueSk7CiAgICAgICAgfWVsc2V7CiAgICAgICAgICAgIGNpbiA+PiBxW2ldLmxhID4+IHFbaV0ucmEgPj4gcVtpXS5sYiA+PiBxW2ldLnJiOwogICAgICAgICAgICB2YWwucGIocVtpXS5sYSk7CiAgICAgICAgICAgIHZhbC5wYihxW2ldLnJhKTsKICAgICAgICAgICAgdmFsLnBiKHFbaV0ubGIpOwogICAgICAgICAgICB2YWwucGIocVtpXS5yYik7CiAgICAgICAgfQogICAgfQogICAgc29ydChhbGwodmFsKSk7CiAgICB2YWwuZXJhc2UodW5pcXVlKGFsbCh2YWwpKSx2YWwuZW5kKCkpOwogICAgRk9SKGksMSxuKXsKICAgICAgICBpZihxW2ldLnR5cGUgPT0gJysnKXsKICAgICAgICAgICAgcVtpXS54ID0gbG93ZXJfYm91bmQoYWxsKHZhbCkscVtpXS54KSAtIHZhbC5iZWdpbigpICsgMTsKICAgICAgICAgICAgcVtpXS55ID0gbG93ZXJfYm91bmQoYWxsKHZhbCkscVtpXS55KSAtIHZhbC5iZWdpbigpICsgMTsKICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgcVtpXS5sYSA9IGxvd2VyX2JvdW5kKGFsbCh2YWwpLHFbaV0ubGEpIC0gdmFsLmJlZ2luKCkgKyAxOwogICAgICAgICAgICBxW2ldLnJhID0gbG93ZXJfYm91bmQoYWxsKHZhbCkscVtpXS5yYSkgLSB2YWwuYmVnaW4oKSArIDE7CiAgICAgICAgICAgIHFbaV0ubGIgPSBsb3dlcl9ib3VuZChhbGwodmFsKSxxW2ldLmxiKSAtIHZhbC5iZWdpbigpICsgMTsKICAgICAgICAgICAgcVtpXS5yYiA9IGxvd2VyX2JvdW5kKGFsbCh2YWwpLHFbaV0ucmIpIC0gdmFsLmJlZ2luKCkgKyAxOwogICAgICAgIH0KICAgIH0KICAgIG0gPSB2YWwuc2l6ZSgpOwogICAgRmVud2ljayB0cmVlKG0pOwogICAgRk9SKGksMSxuKXsKICAgICAgICBpZihxW2ldLnR5cGUgPT0gJysnKXsKICAgICAgICAgICAgaW50IHggPSBxW2ldLngseSA9IHFbaV0ueTsKICAgICAgICAgICAgdHJlZS5mYWtlYWRkKHgseSk7CiAgICAgICAgfWVsc2V7CiAgICAgICAgICAgIGludCB4MSA9IHFbaV0ubGEseDIgPSBxW2ldLmxiLHkxID0gcVtpXS5yYSx5MiA9IHFbaV0ucmI7CiAgICAgICAgICAgIHRyZWUuZmFrZWdldCh4Mix5Mik7CiAgICAgICAgICAgIHRyZWUuZmFrZWdldCh4MS0xLHkyKTsKICAgICAgICAgICAgdHJlZS5mYWtlZ2V0KHgyLHkxLTEpOwogICAgICAgICAgICB0cmVlLmZha2VnZXQoeDEtMSx5MS0xKTsKICAgICAgICB9CiAgICB9CiAgICB0cmVlLmNvbXByZXNzKCk7CiAgICBGT1IoaSwxLG4pewogICAgICAgIGlmKHFbaV0udHlwZSA9PSAnKycpewogICAgICAgICAgICBpbnQgeCA9IHFbaV0ueCx5ID0gcVtpXS55OwogICAgICAgICAgICB0cmVlLnVwZGF0ZSh4LHkpOwogICAgICAgIH1lbHNlewogICAgICAgICAgICBpbnQgeDEgPSBxW2ldLmxhLHgyID0gcVtpXS5sYix5MSA9IHFbaV0ucmEseTIgPSBxW2ldLnJiOwogICAgICAgICAgICBjb3V0IDw8IHRyZWUucXJ5KHgxLHkxLHgyLHkyKSA8PCAnXG4nOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAwOwp9Cg==