#include <bits/stdc++.h>
using namespace std;
int l[100002], v[100002], r[100002];
pair<pair<int, int>, pair<int, int> > p[100002], p2[100002];
int st[1200002], add[1200002];
void push(int n, int s, int e, int v) {
  st[n] += v;
  if (s != e) {
    add[n + n] += v;
    add[n + n + 1] += v;
  }
  add[n] = 0;
}
void update(int n, int s, int e, int l, int r, int v) {
  push(n, s, e, add[n]);
  if (s > r || l > e) return;
  if (l <= s && e <= r) {
    push(n, s, e, v);
    return;
  }
  int mid = (s + e) / 2;
  update(n + n, s, mid, l, r, v);
  update(n + n + 1, mid + 1, e, l, r, v);
  st[n] = max(st[n + n], st[n + n + 1]);
}
int query(int n, int s, int e, int l, int r) {
  push(n, s, e, add[n]);
  if (s > r || l > e) return 0;
  if (l <= s && e <= r) return st[n];
  int mid = (s + e) / 2;
  return max(query(n + n, s, mid, l, r), query(n + n + 1, mid + 1, e, l, r));
}
int main() {
  int mx = 3e5;
  int n;
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    scanf("%d%d%d", &l[i], &v[i], &r[i]);
    p[i] = pair<pair<int, int>, pair<int, int> >(pair<int, int>(l[i], r[i]),
                                                 pair<int, int>(v[i], i));
    p2[i] = pair<pair<int, int>, pair<int, int> >(pair<int, int>(v[i], i),
                                                  pair<int, int>(l[i], r[i]));
  }
  sort(p + 1, p + 1 + n);
  sort(p2 + 1, p2 + 1 + n);
  int ans = 0, L, R;
  int k = 1;
  for (int i = 1; i <= n; i++) {
    int l = p[i].first.first, r = p[i].first.second, v = p[i].second.first,
        j = p[i].second.second;
    while (k <= n && p2[k].first.first < l) {
      int v2 = p2[k].first.first, j2 = p2[k].first.second,
          l2 = p2[k].second.first, r2 = p2[k].second.second;
      update(1, 1, mx, v2, r2, -1);
      k++;
    }
    update(1, 1, mx, v, r, 1);
    int q = query(1, 1, mx, l, mx);
    if (ans < q) {
      ans = q;
      L = i;
    }
  }
  printf("%d\n", ans);
  memset(st, 0, sizeof(st));
  memset(add, 0, sizeof(add));
  k = 1;
  for (int i = 1; i <= L; i++) {
    int l = p[i].first.first, r = p[i].first.second, v = p[i].second.first,
        j = p[i].second.second;
    while (k <= n && p2[k].first.first < l) {
      int v2 = p2[k].first.first, j2 = p2[k].first.second,
          l2 = p2[k].second.first, r2 = p2[k].second.second;
      update(1, 1, mx, v2, r2, -1);
      k++;
    }
    update(1, 1, mx, v, r, 1);
  }
  for (int i = mx; i >= 1; i--) {
    if (query(1, 1, mx, i, i) == ans) {
      L = p[L].first.first;
      R = i;
      break;
    }
  }
  for (int i = 1; i <= n; i++) {
    if (l[i] <= L && R <= r[i] && L <= v[i] && v[i] <= R) {
      printf("%d ", i);
    }
  }
}
