#include <bits/stdc++.h>
using namespace std;
struct seg {
  int x, y1, y2, type;
  bool operator<(const seg &ob) const {
    if (x != ob.x) return x < ob.x;
    return type < ob.type;
  }
} a[200010];
int n, ans, max_[1200010], add[1200010], mm[1200010], maxl, maxr, t;
int xl[100010], xv[100010], xr[100010];
void build(int l, int r, int rt) {
  mm[rt] = l;
  if (l != r) {
    int m = l + r >> 1;
    build(l, m, rt << 1);
    build(m + 1, r, rt << 1 | 1);
  }
}
void pushup(int rt) {
  if (max_[rt << 1] > max_[rt << 1 | 1]) {
    max_[rt] = max_[rt << 1];
    mm[rt] = mm[rt << 1];
  } else {
    max_[rt] = max_[rt << 1 | 1];
    mm[rt] = mm[rt << 1 | 1];
  }
}
void pushdown(int rt) {
  max_[rt << 1] += add[rt];
  add[rt << 1] += add[rt];
  max_[rt << 1 | 1] += add[rt];
  add[rt << 1 | 1] += add[rt];
  add[rt] = 0;
}
void update(int L, int R, int c, int l, int r, int rt) {
  if (L <= l && r <= R) {
    max_[rt] += c;
    add[rt] += c;
    return;
  }
  int m = l + r >> 1;
  pushdown(rt);
  if (m >= L) update(L, R, c, l, m, rt << 1);
  if (m < R) update(L, R, c, m + 1, r, rt << 1 | 1);
  pushup(rt);
}
pair<int, int> query(int L, int R, int l, int r, int rt) {
  if (L <= l && r <= R) return make_pair(max_[rt], mm[rt]);
  int m = l + r >> 1;
  pushdown(rt);
  pair<int, int> ans = make_pair(0, 0);
  if (m >= L) ans = max(ans, query(L, R, l, m, rt << 1));
  if (m < R) ans = max(ans, query(L, R, m + 1, r, rt << 1 | 1));
  return ans;
}
void update() {
  pair<int, int> xxx = query(1, 300000, 1, 300000, 1);
  if (xxx.first > ans) {
    ans = xxx.first;
    maxl = t;
    maxr = xxx.second;
  }
}
void ppp() {
  int i;
  for (i = 1; i <= n; i++) {
    if (xl[i] <= maxl && maxl <= xv[i] && xv[i] <= maxr && maxr <= xr[i]) {
      printf("%d ", i);
    }
  }
}
int main() {
  scanf("%d", &n);
  int i;
  int l, v, r;
  build(1, 300000, 1);
  for (i = 1; i <= n; i++) {
    scanf("%d%d%d", &l, &v, &r);
    xl[i] = l;
    xv[i] = v;
    xr[i] = r;
    a[(i << 1) - 1] = (seg){l, v, r, 1};
    a[i << 1] = (seg){v + 1, v, r, 2};
  }
  sort(a + 1, a + (n << 1) + 1);
  for (i = 1; i <= (n << 1); i++) {
    if (a[i].x != t) {
      update();
      t = a[i].x;
    }
    if (a[i].type == 1)
      update(a[i].y1, a[i].y2, 1, 1, 300000, 1);
    else
      update(a[i].y1, a[i].y2, -1, 1, 300000, 1);
  }
  update();
  printf("%d\n", ans);
  ppp();
  puts("");
  return 0;
}
