#include <bits/stdc++.h>
using namespace std;
const int maxN = 3e5 + 5;
const long long INF = 1e18;
const long long MOD = 1e9 + 7;
long long gcd(long long a, long long b) { return !b ? a : gcd(b, a % b); }
long long sq(long long x) { return (x * x) % MOD; }
long long modP(long long a, long long b) {
  return (!b ? 1 : (sq(modP(a, b / 2)) * (b % 2 ? a : 1)) % MOD);
}
int n, M, l[maxN], v[maxN], r[maxN];
int seg[4 * maxN], lazy[4 * maxN], I[4 * maxN];
vector<pair<int, int> > Q[2][maxN];
vector<int> vec;
void build(int id = 1, int s = 0, int e = M) {
  if (e - s <= 1) {
    I[id] = s;
    return;
  }
  int md = (s + e) / 2;
  build(2 * id, s, md);
  build(2 * id + 1, md, e);
  I[id] = I[2 * id];
  return;
}
void shift(int id) {
  lazy[2 * id] += lazy[id];
  lazy[2 * id + 1] += lazy[id];
  seg[2 * id] += lazy[id];
  seg[2 * id + 1] += lazy[id];
  lazy[id] = 0;
  return;
}
void update(int l, int r, int x, int id = 1, int s = 0, int e = M) {
  if (l <= s && e <= r) {
    seg[id] += x;
    lazy[id] += x;
    return;
  }
  if (l >= e || s >= r) return;
  int md = (s + e) / 2;
  shift(id);
  update(l, r, x, 2 * id, s, md);
  update(l, r, x, 2 * id + 1, md, e);
  I[id] = (seg[2 * id] >= seg[2 * id + 1] ? I[2 * id] : I[2 * id + 1]);
  seg[id] = max(seg[2 * id], seg[2 * id + 1]);
  return;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n;
  for (int i = 0; i < n; i++) {
    cin >> l[i] >> v[i] >> r[i];
    r[i]++;
    M = max(r[i], M);
    Q[0][l[i]].push_back({v[i], r[i]});
    Q[1][v[i]].push_back({v[i], r[i]});
  }
  build();
  int mx = -MOD;
  int L = 0, R = 0;
  for (int i = 0; i <= M; i++) {
    for (auto que : Q[0][i]) {
      update(que.first, que.second, +1);
    }
    if (seg[1] > mx) {
      mx = seg[1];
      L = i;
      R = I[1];
    }
    for (auto que : Q[1][i]) {
      update(que.first, que.second, -1);
    }
  }
  for (int i = 0; i < n; i++) {
    if (l[i] <= L && L <= v[i] && v[i] <= R && R < r[i]) vec.push_back(i);
  }
  cout << vec.size() << "\n";
  for (auto u : vec) {
    cout << u + 1 << " ";
  }
  cout << flush;
  return 0;
}
