#include <bits/stdc++.h>
using namespace std;
const int MAXN = 3e5 + 100;
int cnt[MAXN * 4], mx[MAXN * 4], laz[MAXN * 4], mk[4 * MAXN];
int Val[MAXN], rght[MAXN], lft[MAXN];
int F[MAXN];
void make(int v, int l, int r) {
  if (r - l == 1) {
    cnt[v] = 1;
    mk[v] = r - 1;
    return;
  }
  int mid = (l + r) / 2;
  make(2 * v, l, mid);
  make(2 * v + 1, mid, r);
  cnt[v] = r - l;
  mk[v] = r - 1;
  return;
}
void add(int v, int l, int r, int f, int e, int x) {
  if (f <= l && r <= e) {
    laz[v] += x;
    mx[v] += x;
    return;
  }
  int mid = (l + r) / 2;
  if (f < mid) {
    add(2 * v, l, mid, f, e, x);
  }
  if (mid < e) {
    add(2 * v + 1, mid, r, f, e, x);
  }
  mx[v] = max(mx[2 * v], mx[2 * v + 1]) + laz[v];
  if (mx[2 * v] == mx[2 * v + 1]) {
    cnt[v] = cnt[2 * v] + cnt[2 * v + 1];
    mk[v] = mk[2 * v + 1];
    return;
  } else if (mx[2 * v] > mx[2 * v + 1]) {
    cnt[v] = cnt[2 * v];
    mk[v] = mk[2 * v];
    return;
  }
  cnt[v] = cnt[2 * v + 1];
  mk[v] = mk[2 * v + 1];
  return;
}
pair<int, pair<int, int> > ask(int v, int l, int r, int f, int e) {
  if (f <= l && r <= e) {
    return {mx[v], {cnt[v], mk[v]}};
  }
  int mid = (l + r) / 2;
  pair<int, pair<int, int> > res, res2;
  res = {-1, {0, 0}};
  res2 = {-1, {0, 0}};
  if (f < mid) {
    res = ask(2 * v, l, mid, f, e);
  }
  if (mid < e) {
    res2 = ask(2 * v + 1, mid, r, f, e);
  }
  if (res.first == res2.first) {
    return {res.first + laz[v],
            {res.second.first + res2.second.first, res2.second.second}};
  } else if (res.first > res2.first) {
    return {res.first + laz[v], {res.second.first, res.second.second}};
  }
  return {res2.first + laz[v], {res2.second.first, res2.second.second}};
}
int main() {
  int n;
  cin >> n;
  vector<pair<int, int> > V, W;
  for (int i = 0; i < n; i++) {
    cin >> lft[i] >> Val[i] >> rght[i];
    V.push_back({Val[i], i});
    W.push_back({rght[i], i});
  }
  make(1, 0, n);
  sort(V.begin(), V.end());
  sort(W.begin(), W.end());
  for (int i = 0; i < n; i++) {
    F[V[i].second] = i;
  }
  int R = 0, L = 0;
  int mx = 0;
  int j = 0;
  for (int i = 0; i < n; i++) {
    int p = V[i].second;
    while (W[j].first < Val[p]) {
      int q = W[j].second;
      int x = lower_bound(V.begin(), V.end(), make_pair(lft[q], 0)) - V.begin();
      add(1, 0, n, x, F[q] + 1, -1);
      j++;
    }
    int x = lower_bound(V.begin(), V.end(), make_pair(lft[p], 0)) - V.begin();
    add(1, 0, n, x, i + 1, 1);
    pair<int, pair<int, int> > h = ask(1, 0, n, 0, i + 1);
    if (mx < h.first) {
      mx = h.first;
      R = i;
      L = h.second.second;
    }
  }
  cout << mx << endl;
  for (int i = L; i <= R; i++) {
    int q = V[i].second;
    if (lft[q] <= V[L].first && rght[q] >= V[R].first) {
      cout << q + 1 << ' ';
    }
  }
  cout << endl;
  return 0;
}
