#include <bits/stdc++.h>
#define ll long long
#define el cout << '\n'
#define ld long double
using namespace std;
struct Point
{
int v;
ld x, y, y_t;
Point(ld x = 0, ld y = 0, int v = 0, ld y_t = 0) :
v(v), x(x), y(y), y_t(y_t) {};
bool operator < (const Point &other) const
{
if (x != other.x)
return x < other.x;
return v;
}
};
const int maxn = 3e5;
int n, bit[maxn + 10];
ll ans = 0;
vector<Point> points;
vector<ld> v;
int get_id(ld x)
{
return lower_bound(v.begin(), v.end(), x) - v.begin() + 1;
}
void update(int x, int v)
{
for (; x <= maxn; x += x&-x)
bit[x] += v;
}
int get(int x)
{
int ans = 0;
for (;x; x &= x - 1)
ans += bit[x];
return ans;
}
int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
if (fopen("SEGMENT.INP", "r"))
{
freopen("SEGMENT.INP", "r", stdin);
freopen("SEGMENT.OUT", "w", stdout);
}
cin >> n;
for (int i = 1; i <= n; i++)
{
ld x_a, x_b, y;
cin >> x_a >> x_b >> y;
if (x_a > x_b)
swap(x_a, x_b);
points.push_back(Point(x_a, y, 1));
points.push_back(Point(x_b, y, -1));
v.push_back(y);
}
for (int i = 1; i <= n; i++)
{
ld y_a, y_b, x;
cin >> y_a >> y_b >> x;
if (y_a > y_b)
swap(y_a, y_b);
points.push_back(Point(x, y_a, 0, y_b));
v.push_back(y_a);
v.push_back(y_b);
}
sort(points.begin(), points.end());
sort(v.begin(), v.end());
v.resize(unique(v.begin(), v.end()) - v.begin());
for (Point p : points)
{
// cout << p.x << ' ' << p.y << ' ' << p.y_t << ' ' << p.v, el;
if (p.v == 0)
ans += get(get_id(p.y_t)) - get(get_id(p.y) - 1);
else
update(get_id(p.y), p.v);
// cout << ans, el;
}
cout << ans;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIGVsIGNvdXQgPDwgJ1xuJwojZGVmaW5lIGxkIGxvbmcgZG91YmxlCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IFBvaW50CnsKICAgIGludCB2OwogICAgbGQgeCwgeSwgeV90OwoKICAgIFBvaW50KGxkIHggPSAwLCBsZCB5ID0gMCwgaW50IHYgPSAwLCBsZCB5X3QgPSAwKSA6CiAgICAgICAgdih2KSwgeCh4KSwgeSh5KSwgeV90KHlfdCkge307CiAgICBib29sIG9wZXJhdG9yIDwgKGNvbnN0IFBvaW50ICZvdGhlcikgY29uc3QKICAgIHsKICAgICAgICBpZiAoeCAhPSBvdGhlci54KQogICAgICAgICAgICByZXR1cm4geCA8IG90aGVyLng7CiAgICAgICAgcmV0dXJuIHY7CiAgICB9Cn07Cgpjb25zdCBpbnQgbWF4biA9IDNlNTsKCmludCBuLCBiaXRbbWF4biArIDEwXTsKbGwgYW5zID0gMDsKdmVjdG9yPFBvaW50PiBwb2ludHM7CnZlY3RvcjxsZD4gdjsKCmludCBnZXRfaWQobGQgeCkKewogICAgcmV0dXJuIGxvd2VyX2JvdW5kKHYuYmVnaW4oKSwgdi5lbmQoKSwgeCkgLSB2LmJlZ2luKCkgKyAxOwp9CnZvaWQgdXBkYXRlKGludCB4LCBpbnQgdikKewogICAgZm9yICg7IHggPD0gbWF4bjsgeCArPSB4Ji14KQogICAgICAgIGJpdFt4XSArPSB2Owp9CmludCBnZXQoaW50IHgpCnsKICAgIGludCBhbnMgPSAwOwogICAgZm9yICg7eDsgeCAmPSB4IC0gMSkKICAgICAgICBhbnMgKz0gYml0W3hdOwogICAgcmV0dXJuIGFuczsKfQoKaW50IG1haW4oKQp7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOyBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKICAgIGlmIChmb3BlbigiU0VHTUVOVC5JTlAiLCAiciIpKQogICAgewogICAgICAgIGZyZW9wZW4oIlNFR01FTlQuSU5QIiwgInIiLCBzdGRpbik7CiAgICAgICAgZnJlb3BlbigiU0VHTUVOVC5PVVQiLCAidyIsIHN0ZG91dCk7CiAgICB9CgogICAgY2luID4+IG47CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspCiAgICB7CiAgICAgICAgbGQgeF9hLCB4X2IsIHk7CiAgICAgICAgY2luID4+IHhfYSA+PiB4X2IgPj4geTsKICAgICAgICBpZiAoeF9hID4geF9iKQogICAgICAgICAgICBzd2FwKHhfYSwgeF9iKTsKICAgICAgICBwb2ludHMucHVzaF9iYWNrKFBvaW50KHhfYSwgeSwgMSkpOwogICAgICAgIHBvaW50cy5wdXNoX2JhY2soUG9pbnQoeF9iLCB5LCAtMSkpOwogICAgICAgIHYucHVzaF9iYWNrKHkpOwogICAgfQogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKQogICAgewogICAgICAgIGxkIHlfYSwgeV9iLCB4OwogICAgICAgIGNpbiA+PiB5X2EgPj4geV9iID4+IHg7CiAgICAgICAgaWYgKHlfYSA+IHlfYikKICAgICAgICAgICAgc3dhcCh5X2EsIHlfYik7CiAgICAgICAgcG9pbnRzLnB1c2hfYmFjayhQb2ludCh4LCB5X2EsIDAsIHlfYikpOwogICAgICAgIHYucHVzaF9iYWNrKHlfYSk7CiAgICAgICAgdi5wdXNoX2JhY2soeV9iKTsKICAgIH0KICAgIHNvcnQocG9pbnRzLmJlZ2luKCksIHBvaW50cy5lbmQoKSk7CiAgICBzb3J0KHYuYmVnaW4oKSwgdi5lbmQoKSk7CiAgICB2LnJlc2l6ZSh1bmlxdWUodi5iZWdpbigpLCB2LmVuZCgpKSAtIHYuYmVnaW4oKSk7CgogICAgZm9yIChQb2ludCBwIDogcG9pbnRzKQogICAgewovLyAgICAgICAgY291dCA8PCBwLnggPDwgJyAnIDw8IHAueSA8PCAnICcgPDwgcC55X3QgPDwgJyAnIDw8IHAudiwgZWw7CiAgICAgICAgaWYgKHAudiA9PSAwKQogICAgICAgICAgICBhbnMgKz0gZ2V0KGdldF9pZChwLnlfdCkpIC0gZ2V0KGdldF9pZChwLnkpIC0gMSk7CiAgICAgICAgZWxzZQogICAgICAgICAgICB1cGRhdGUoZ2V0X2lkKHAueSksIHAudik7Ci8vICAgICAgICBjb3V0IDw8IGFucywgZWw7CiAgICB9CiAgICBjb3V0IDw8IGFuczsKfQo=