//FRUSTRATED
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define mp make_pair
#define ll long long
#define fi(filename) freopen(filename, "r", stdin)
#define F(i,a,n) for(int i=(a);i<(n);++i)
#define S(x) scanf("%d",&x)
#define Pl(x) printf("%lld\n",x)
#define fr first
#define se second
#define all(x) x.begin(),x.end()
int maxval;
int tree[100000007];
ll read(int idx){
ll sum = 0;
while (idx > 0){
sum += tree[idx];
idx -= (idx & -idx);
}
return sum;
}
void update(int idx ,int val){
while (idx <= maxval){
tree[idx] += val;
idx += (idx & -idx);
}
}
int main() {
// fi("input.txt");
int n,m,ct=0;
ll ans=0;
int col;
double x1,x2,y,y1,y2,x;
int xx1,xx2,yy,yy1,yy2,xx,prev;
S(n);
pair<int,int> pt;
vector<int> dell;
vector< pair<pair<pair<int,int>,int>,pair<int,int> > > temp;
vector< pair<pair<int,int>,int> > vect;
F(i,0,n) {
scanf("%lf%lf%lf",&x1,&x2,&y);
xx1=x1*10000000;
xx2=x2*10000000;
yy=y*10000000;
xx1+=1;xx2+=1;yy+=1;
if(xx1>xx2) swap(xx1,xx2);
vect.pb(mp(mp(xx1,0),yy));
vect.pb(mp(mp(xx2,3),yy));
maxval=max(maxval,yy);
}
F(i,0,n) {
scanf("%lf%lf%lf",&y1,&y2,&x);
yy1=y1*10000000;
yy2=y2*10000000;
xx=x*10000000;
yy1+=1;yy2+=1;xx+=1;
if(yy1>yy2) swap(yy1,yy2);
vect.pb(mp(mp(xx,2),yy1));
temp.pb(mp(mp(mp(xx,2),yy1),mp(xx,yy2)));
maxval=max(maxval,yy1);
maxval=max(maxval,yy2);
}
maxval+=5;
sort(all(vect));
sort(all(temp));
n=vect.size();
prev=-1;
F(i,0,n) {
xx1=vect[i].fr.fr;yy1=vect[i].se;
col=vect[i].fr.se;
if(xx1!=prev) {
m=dell.size();
F(j,0,m) {
update(dell[j],-1);
}
dell.clear();
}
if(col==0) {
update(yy1,1);
}
else if(col==3) {
prev==xx1;
dell.pb(yy1);
}
else {
pt=temp[ct].se;
yy2=pt.se;
ans=ans+read(yy2)-read(yy1-1);
++ct;
}
}
Pl(ans);
return 0;
}
Ly9GUlVTVFJBVEVECiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIG1wIG1ha2VfcGFpcgojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIGZpKGZpbGVuYW1lKSBmcmVvcGVuKGZpbGVuYW1lLCAiciIsIHN0ZGluKQojZGVmaW5lIEYoaSxhLG4pIGZvcihpbnQgaT0oYSk7aTwobik7KytpKQojZGVmaW5lIFMoeCkgc2NhbmYoIiVkIiwmeCkKI2RlZmluZSBQbCh4KSBwcmludGYoIiVsbGRcbiIseCkKI2RlZmluZSBmciBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIGFsbCh4KSAgICB4LmJlZ2luKCkseC5lbmQoKQppbnQgbWF4dmFsOwppbnQgdHJlZVsxMDAwMDAwMDddOwpsbCByZWFkKGludCBpZHgpewogICAgbGwgc3VtID0gMDsKICAgIHdoaWxlIChpZHggPiAwKXsKICAgICAgICBzdW0gKz0gdHJlZVtpZHhdOwogICAgICAgIGlkeCAtPSAoaWR4ICYgLWlkeCk7CiAgICB9CiAgICByZXR1cm4gc3VtOwp9CnZvaWQgdXBkYXRlKGludCBpZHggLGludCB2YWwpewogICAgd2hpbGUgKGlkeCA8PSBtYXh2YWwpewogICAgICAgIHRyZWVbaWR4XSArPSB2YWw7CiAgICAgICAgaWR4ICs9IChpZHggJiAtaWR4KTsKICAgIH0KfQppbnQgbWFpbigpIHsKLy8JZmkoImlucHV0LnR4dCIpOwoJaW50IG4sbSxjdD0wOwoJbGwgYW5zPTA7CglpbnQgY29sOwoJZG91YmxlIHgxLHgyLHkseTEseTIseDsKCWludCB4eDEseHgyLHl5LHl5MSx5eTIseHgscHJldjsKCVMobik7CglwYWlyPGludCxpbnQ+IHB0OwoJdmVjdG9yPGludD4gZGVsbDsKCXZlY3RvcjwgcGFpcjxwYWlyPHBhaXI8aW50LGludD4saW50PixwYWlyPGludCxpbnQ+ID4gPiB0ZW1wOwoJdmVjdG9yPCBwYWlyPHBhaXI8aW50LGludD4saW50PiA+IHZlY3Q7CglGKGksMCxuKSB7CgkJc2NhbmYoIiVsZiVsZiVsZiIsJngxLCZ4MiwmeSk7CgkJeHgxPXgxKjEwMDAwMDAwOwoJCXh4Mj14MioxMDAwMDAwMDsKCQl5eT15KjEwMDAwMDAwOwoJCXh4MSs9MTt4eDIrPTE7eXkrPTE7CgkJaWYoeHgxPnh4Mikgc3dhcCh4eDEseHgyKTsKCQl2ZWN0LnBiKG1wKG1wKHh4MSwwKSx5eSkpOwoJCXZlY3QucGIobXAobXAoeHgyLDMpLHl5KSk7CgkJbWF4dmFsPW1heChtYXh2YWwseXkpOwoJfQoJRihpLDAsbikgewoJCXNjYW5mKCIlbGYlbGYlbGYiLCZ5MSwmeTIsJngpOwoJCXl5MT15MSoxMDAwMDAwMDsKCQl5eTI9eTIqMTAwMDAwMDA7CgkJeHg9eCoxMDAwMDAwMDsKCQl5eTErPTE7eXkyKz0xO3h4Kz0xOwoJCWlmKHl5MT55eTIpIHN3YXAoeXkxLHl5Mik7CgkJdmVjdC5wYihtcChtcCh4eCwyKSx5eTEpKTsKCQl0ZW1wLnBiKG1wKG1wKG1wKHh4LDIpLHl5MSksbXAoeHgseXkyKSkpOwoJCW1heHZhbD1tYXgobWF4dmFsLHl5MSk7CgkJbWF4dmFsPW1heChtYXh2YWwseXkyKTsKCX0KCW1heHZhbCs9NTsKCXNvcnQoYWxsKHZlY3QpKTsKCXNvcnQoYWxsKHRlbXApKTsKCW49dmVjdC5zaXplKCk7CglwcmV2PS0xOwoJRihpLDAsbikgewoJCXh4MT12ZWN0W2ldLmZyLmZyO3l5MT12ZWN0W2ldLnNlOwoJCWNvbD12ZWN0W2ldLmZyLnNlOwoJCWlmKHh4MSE9cHJldikgewoJCQltPWRlbGwuc2l6ZSgpOwoJCQlGKGosMCxtKSB7CgkJCQl1cGRhdGUoZGVsbFtqXSwtMSk7CgkJCX0KCQkJZGVsbC5jbGVhcigpOwoJCX0KCQlpZihjb2w9PTApIHsKCQkJdXBkYXRlKHl5MSwxKTsKCQl9CgkJZWxzZSBpZihjb2w9PTMpIHsKCQkJcHJldj09eHgxOwoJCQlkZWxsLnBiKHl5MSk7CgkJfQoJCWVsc2UgewoJCQlwdD10ZW1wW2N0XS5zZTsKCQkJeXkyPXB0LnNlOwoJCQlhbnM9YW5zK3JlYWQoeXkyKS1yZWFkKHl5MS0xKTsKCQkJKytjdDsKCQl9Cgl9CglQbChhbnMpOwoJcmV0dXJuIDA7Cn0=