#include <bits/stdc++.h>
using namespace std;
const int N = 3e5 + 1;
int l[N], v[N], r[N];
int lazy[N * 4];
pair<int, int> seg[N * 4];
vector<int> o[N], e[N];
void build(int id = 1, int l = 0, int r = N - 1) {
  if (l == r) {
    seg[id] = {0, l};
    return;
  }
  int mid = (l + r) / 2;
  build(id * 2, l, mid);
  build(id * 2 + 1, mid + 1, r);
  seg[id] = max(seg[id << 1], seg[id << 1 | 1]);
}
void update(int id, int x) {
  seg[id].first += x;
  lazy[id] += x;
}
void shift(int id) {
  update(id * 2, lazy[id]);
  update(id * 2 + 1, lazy[id]);
  lazy[id] = 0;
}
void add(int L, int R, int sign, int id = 1, int l = 0, int r = N - 1) {
  if (R < l || r < L) return;
  if (L <= l && r <= R) {
    update(id, sign);
    return;
  }
  shift(id);
  int mid = (l + r) / 2;
  add(L, R, sign, id * 2, l, mid);
  add(L, R, sign, id * 2 + 1, mid + 1, r);
  seg[id] = max(seg[id * 2], seg[id * 2 + 1]);
}
int main() {
  int n;
  cin >> n;
  for (int i = 0; i < n; i++) {
    cin >> l[i] >> v[i] >> r[i];
    o[--l[i]].push_back(i);
    e[--v[i]].push_back(i);
    r[i]--;
  }
  build();
  int ans = 0, sl = N + N, sr = -1;
  for (int i = 0; i < N; i++) {
    for (auto j : o[i]) add(v[j], r[j], 1);
    if (seg[1].first > ans) {
      ans = seg[1].first;
      sl = i;
      sr = seg[1].second;
    }
    for (auto j : e[i]) add(v[j], r[j], -1);
  }
  cout << ans << endl;
  for (int i = 0; i < n; i++)
    if (sl <= v[i] && v[i] <= sr && l[i] <= sl && sr <= r[i])
      cout << i + 1 << ' ';
  cout << endl;
}
