#include <bits/stdc++.h>
const int M = 300000 + 1;
const int N = 100000 + 1;
struct node {
  int v, L, R, id;
  friend bool operator<(const node& i, const node& j) { return j.R < i.R; }
};
struct tnode {
  int addv, mx, ansid;
};
node ar[N];
tnode seg[M << 2];
std::priority_queue<node> Q;
void Up(tnode& fa, tnode& ls, tnode& rs) {
  if (ls.mx > rs.mx) {
    fa.mx = ls.mx;
    fa.ansid = ls.ansid;
  } else {
    fa.mx = rs.mx;
    fa.ansid = rs.ansid;
  }
}
void build(int l, int r, int rt) {
  seg[rt].addv = seg[rt].mx = 0;
  seg[rt].ansid = l;
  if (l == r) return;
  int mid = (l + r) >> 1;
  build(l, mid, rt << 1);
  build(mid + 1, r, rt << 1 | 1);
}
void Down(tnode& fa, tnode& ls, tnode& rs) {
  if (fa.addv != 0) {
    ls.mx += fa.addv;
    ls.addv += fa.addv;
    rs.mx += fa.addv;
    rs.addv += fa.addv;
    fa.addv = 0;
  }
}
void update(int L, int R, int v, int l, int r, int rt) {
  if (L <= l && r <= R) {
    seg[rt].mx += v;
    seg[rt].addv += v;
    return;
  }
  Down(seg[rt], seg[rt << 1], seg[rt << 1 | 1]);
  int mid = (l + r) >> 1;
  if (R <= mid)
    update(L, R, v, l, mid, rt << 1);
  else if (L > mid)
    update(L, R, v, mid + 1, r, rt << 1 | 1);
  else {
    update(L, mid, v, l, mid, rt << 1);
    update(mid + 1, R, v, mid + 1, r, rt << 1 | 1);
  }
  Up(seg[rt], seg[rt << 1], seg[rt << 1 | 1]);
}
bool cc(const node& x, const node& y) { return x.v < y.v; }
int main() {
  int n;
  scanf("%d", &n);
  for (int i = 1; i <= n; ++i) {
    ar[i].id = i;
    scanf("%d%d%d", &ar[i].L, &ar[i].v, &ar[i].R);
  }
  std::sort(ar + 1, ar + 1 + n, cc);
  int idx = 1;
  int ans = 0, ansl = 0, ansr = 0;
  build(1, M, 1);
  for (int i = 1; i < M; ++i) {
    while (idx <= n && ar[idx].v == i) {
      Q.push(ar[idx]);
      update(ar[idx].L, ar[idx].v, 1, 1, M, 1);
      ++idx;
    }
    while (!Q.empty()) {
      node u = Q.top();
      if (u.R < i) {
        Q.pop();
        update(u.L, u.v, -1, 1, M, 1);
      } else
        break;
    }
    if (seg[1].mx > ans) {
      ans = seg[1].mx;
      ansl = seg[1].ansid;
      ansr = i;
    }
  }
  printf("%d\n", ans);
  int f = 1;
  for (int i = 1; i <= n; ++i)
    if (ar[i].L <= ansl && ar[i].R >= ansr && ar[i].v >= ansl &&
        ar[i].v <= ansr) {
      if (f)
        f = 0;
      else
        putchar(' ');
      printf("%d", ar[i].id);
    }
  return 0;
}
