#include <bits/stdc++.h>
using namespace std;
const int M = 300005;
int read() {
  int x = 0, f = 1;
  char c;
  while ((c = getchar()) < '0' || c > '9') {
    if (c == '-') f = -1;
  }
  while (c >= '0' && c <= '9') {
    x = (x << 3) + (x << 1) + (c ^ 48);
    c = getchar();
  }
  return x * f;
}
int n, ans, ansl, ansr, mx[4 * M], tag[4 * M], fr[4 * M];
struct node {
  int l, r, v;
};
vector<node> a[M], b;
void down(int i) {
  if (!tag[i]) return;
  tag[i << 1] += tag[i];
  tag[i << 1 | 1] += tag[i];
  mx[i << 1] += tag[i];
  mx[i << 1 | 1] += tag[i];
  tag[i] = 0;
}
void add(int i, int l, int r, int L, int R, int v) {
  if (!fr[i]) fr[i] = l;
  if (L > r || l > R) return;
  if (L <= l && r <= R) {
    mx[i] += v;
    tag[i] += v;
    return;
  }
  down(i);
  int mid = (l + r) >> 1;
  add(i << 1, l, mid, L, R, v);
  add(i << 1 | 1, mid + 1, r, L, R, v);
  mx[i] = max(mx[i << 1], mx[i << 1 | 1]);
  if (mx[i] == mx[i << 1]) fr[i] = fr[i << 1];
  if (mx[i] == mx[i << 1 | 1]) fr[i] = fr[i << 1 | 1];
}
signed main() {
  n = read();
  for (int i = 1; i <= n; i++) {
    int l = read(), v = read(), r = read();
    b.push_back(node{l, r, v});
    a[l].push_back(node{v, r, 1});
    a[v + 1].push_back(node{v, r, -1});
  }
  for (int i = 1; i <= 3e5; i++) {
    for (int j = 0; j < a[i].size(); j++)
      add(1, 1, 3e5, a[i][j].l, a[i][j].r, a[i][j].v);
    if (mx[1] > ans) {
      ans = mx[1];
      ansl = i;
      ansr = fr[1];
    }
  }
  printf("%d\n", ans);
  for (int i = 1; i <= n; i++)
    if (b[i - 1].l <= ansl && ansl <= b[i - 1].v && b[i - 1].v <= ansr &&
        ansr <= b[i - 1].r)
      printf("%d ", i);
}
