#include <bits/stdc++.h>
using namespace std;
const int N = 4e5 + 10;
struct node {
  int l, r, op;
  bool operator<(node b) const { return r < b.r || (r == b.r && l < b.l); }
} a[N];
multiset<int> s[2];
int n, ans;
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    scanf("%d%d%d", &a[i].l, &a[i].r, &a[i].op), a[i].op--;
  }
  sort(a + 1, a + n + 1);
  for (int i = 1; i <= n; i++) {
    int t = a[i].op;
    set<int>::iterator it = s[t ^ 1].lower_bound(a[i].l);
    if (it == s[t ^ 1].end()) {
      s[t].insert(a[i].r);
    } else {
      ans++;
      s[t ^ 1].erase(it);
    }
  }
  printf("%d\n", n - ans);
  return 0;
}
