#include <bits/stdc++.h>
using namespace std;
const int N = 3e5 + 10;
long long lazy[4 * N], n, maxi, maxn;
vector<pair<pair<long long, long long>, pair<long long, long long> > > lines;
vector<pair<pair<long long, long long>, int> > ppl;
pair<long long, long long> seg[4 * N], ans;
void buildtree(int L, int R, int tag) {
  if (L == R - 1) {
    seg[tag] = make_pair(0, L);
    return;
  }
  buildtree(L, (L + R) / 2, tag * 2);
  buildtree((L + R) / 2, R, tag * 2 + 1);
  seg[tag] = seg[tag * 2];
}
void propagate(int tag) {
  if (!lazy[tag]) return;
  lazy[tag * 2] += lazy[tag];
  lazy[tag * 2 + 1] += lazy[tag];
  seg[tag * 2].first += lazy[tag];
  seg[tag * 2 + 1].first += lazy[tag];
  lazy[tag] = 0;
  return;
}
void modify(int L, int R, int tag, int s, int e, int val) {
  if (e <= L || s >= R) return;
  if (L >= s && e >= R) {
    lazy[tag] += val;
    seg[tag].first += val;
    return;
  }
  propagate(tag);
  modify(L, (R + L) / 2, tag * 2, s, e, val);
  modify((R + L) / 2, R, tag * 2 + 1, s, e, val);
  seg[tag] = (seg[tag * 2].first > seg[tag * 2 + 1].first ? seg[tag * 2]
                                                          : seg[tag * 2 + 1]);
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n;
  for (int i = 0; i < n; i++) {
    int l, r, v;
    cin >> l >> v >> r;
    ppl.push_back(make_pair(make_pair(l, r), v));
    if (l > v) swap(l, v);
    if (v > r) swap(r, v);
    lines.push_back(make_pair(make_pair(v, 0), make_pair(l, v)));
    lines.push_back(make_pair(make_pair(r, 1), make_pair(l, v)));
    maxn = max(maxn, (long long)v);
  }
  sort(lines.begin(), lines.end());
  buildtree(0, maxn + 1, 1);
  for (int i = 0; i < 2 * n; i++) {
    int r = lines[i].second.second, l = lines[i].second.first,
        v = lines[i].first.second;
    modify(0, maxn + 1, 1, l, r + 1, (v == 0 ? 1 : -1));
    if (maxi < seg[1].first) {
      maxi = seg[1].first;
      ans = make_pair(lines[i].first.first, seg[1].second);
    }
  }
  cout << maxi << " " << endl;
  for (int i = 0; i < n; i++) {
    int l = ppl[i].first.first, r = ppl[i].first.second, v = ppl[i].second;
    int x1 = min(r, v), x2 = max(r, v);
    if (v < l) swap(v, l);
    if (x1 <= ans.first && x2 >= ans.first && l <= ans.second &&
        v >= ans.second)
      cout << i + 1 << " ";
  }
}
