#include <bits/stdc++.h>   const int mod = 1000000007;   const int inf = 1000000009;   const long long INF = 1000000000000000009;   const long long big = 1000000000000000;   const long double eps = 1e-9;   using namespace std;   struct odcinek {     int l, x, r, nr;   };   int suma = 1;   odcinek T[100005];   int D[1100005], M[1100005], S[1100005];   bool cmp(odcinek a, odcinek b) { return a.x < b.x; }   void lazy(int u) {     if (2 * u + 1 <= suma) {       D[2 * u] += D[u];       D[2 * u + 1] += D[u];     }     M[u] += D[u];     D[u] = 0;   }   void dodaj(int a, int b, int lo, int hi, int u, int c) {     if (b <= a) return;     lazy(u);     if (a == lo && b == hi) {       D[u] += c;       return;     }     int mid = (lo + hi) / 2;     dodaj(a, min(b, mid), lo, mid, 2 * u, c);     dodaj(max(a, mid), b, mid, hi, 2 * u + 1, c);     if (M[2 * u] + D[2 * u] >= M[2 * u + 1] + D[2 * u + 1]) {       M[u] = M[2 * u] + D[2 * u];       S[u] = S[2 * u];     } else {       M[u] = M[2 * u + 1] + D[2 * u + 1];       S[u] = S[2 * u + 1];     }   }   int main() {     ios::sync_with_stdio(false);     cin.tie();     cout.tie();     int n;     cin >> n;     while (suma < 300000) suma *= 2;     suma *= 2;     suma--;     for (int i = suma / 2 + 1; i <= suma; i++) S[i] = i - suma / 2;     for (int i = suma / 2; i >= 1; i--) S[i] = S[2 * i];     for (int i = 1; i <= n; i++) {       int a, b, c;       cin >> a >> b >> c;       T[i] = {a, b, c, i};     }     sort(T + 1, T + n + 1, cmp);     priority_queue<pair<int, int> > Q;     int wynik = 0;     pair<int, int> skad;     for (int i = 1; i <= n; i++) {       while (!Q.empty() && -Q.top().first < T[i].x) {         pair<int, int> x = Q.top();         dodaj(T[x.second].l, T[x.second].x + 1, 1, suma / 2 + 2, 1, -1);         Q.pop();       }       dodaj(T[i].l, T[i].x + 1, 1, suma / 2 + 2, 1, 1);       lazy(1);       if (M[1] > wynik) {         wynik = M[1];         skad = make_pair(S[1], T[i].x);       }       Q.push(make_pair(-T[i].r, i));     }     cout << wynik <<   n ;     for (int i = 1; i <= n; i++) {       if (T[i].l <= skad.first && T[i].r >= skad.second && T[i].x >= skad.first &&           T[i].x <= skad.second)         cout << T[i].nr <<    ;     }     return 0;   }   