#include <bits/stdc++.h>
using namespace std;
int hmt() {
  int x = 0;
  int c = getchar(), n = 0;
  for (; !isdigit(c); c = getchar()) n = (c == '-');
  for (; isdigit(c); c = getchar()) x = x * 10 + c - '0';
  if (n) x = -x;
  return x;
}
const int N = 300010;
int n, t[4 * N], mem[4 * N];
void tran(int s) {
  int x = mem[s];
  if (!x) return;
  t[2 * s] += x;
  t[2 * s + 1] += x;
  mem[2 * s] += x;
  mem[2 * s + 1] += x;
  mem[s] = 0;
}
void update(int s, int l, int r, int u, int v, int x) {
  if (l > v || r < u) return;
  if (l >= u && r <= v) {
    t[s] += x;
    mem[s] += x;
    return;
  }
  int mid = (l + r) / 2;
  tran(s);
  update(2 * s, l, mid, u, v, x);
  update(2 * s + 1, mid + 1, r, u, v, x);
  t[s] = max(t[2 * s], t[2 * s + 1]);
}
int get(int s, int l, int r, int u) {
  if (l > u || r < u) return 0;
  if (l == r) return t[s];
  tran(s);
  int mid = (l + r) / 2;
  return max(get(2 * s, l, mid, u), get(2 * s + 1, mid + 1, r, u));
}
struct oo {
  int l, a, r;
} a[N];
vector<int> I[N], O[N];
pair<int, int> ans;
int main() {
  n = hmt();
  for (int i = 1, _b = n; i <= _b; ++i) {
    a[i] = {hmt(), hmt(), hmt()};
    I[a[i].l].push_back(i);
    O[a[i].a + 1].push_back(i);
  }
  for (int i = 1, _b = 300000; i <= _b; ++i) {
    for (auto &j : I[i]) update(1, 1, 3e5, a[j].a, a[j].r, 1);
    for (auto &j : O[i]) update(1, 1, 3e5, a[j].a, a[j].r, -1);
    if (t[1] > ans.first) ans = {t[1], i};
  }
  cout << ans.first << "\n";
  memset(t, 0, sizeof(t));
  memset(mem, 0, sizeof(mem));
  vector<int> e;
  for (int i = 1, _b = n; i <= _b; ++i) {
    if (a[i].l <= ans.second && a[i].a >= ans.second) {
      update(1, 1, 3e5, a[i].a, a[i].r, 1);
      e.push_back(i);
    }
  }
  for (int i = 1, _b = 300000; i <= _b; ++i)
    if (get(1, 1, 3e5, i) == ans.first) {
      for (auto &j : e)
        if (a[j].a <= i && a[j].r >= i) cout << j << " ";
      return 0;
    }
}
