#include <bits/stdc++.h>
const int N = 300010;
int M[N << 2], I[N << 2], A[N << 2];
void U(int L, int R, int v, int l, int r, int x) {
  if (L <= l && r <= R) {
    M[x] += v;
    A[x] += v;
    if (!I[x]) I[x] = l;
    return;
  }
  int m = l + r >> 1;
  if (L <= m) U(L, R, v, l, m, x + x);
  if (R > m) U(L, R, v, m + 1, r, x + x + 1);
  if (M[x + x] > M[x + x + 1]) {
    M[x] = M[x + x];
    I[x] = I[x + x];
  } else {
    M[x] = M[x + x + 1];
    I[x] = I[x + x + 1];
  }
  M[x] += A[x];
}
std::vector<int> V[N], R[N];
int l[N], v[N], r[N];
int main() {
  int n, ll, rr, ret = 0;
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    scanf("%d%d%d", &l[i], &v[i], &r[i]);
    V[v[i]].push_back(i);
    R[r[i]].push_back(i);
  }
  for (int i = 1; i < N; i++) {
    int sz = V[i].size();
    for (int j = 0; j < sz; j++) U(l[V[i][j]], i, 1, 1, N - 10, 1);
    if (M[1] > ret) ret = M[1], ll = I[1], rr = i;
    sz = R[i].size();
    for (int j = 0; j < sz; j++) U(l[R[i][j]], v[R[i][j]], -1, 1, N - 10, 1);
  }
  printf("%d\n", ret);
  for (int i = 0; i < n; i++)
    if (ll <= v[i] && v[i] <= rr && l[i] <= ll && rr <= r[i])
      printf("%d ", i + 1);
  return 0;
}
