#define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define INF (1<<29) #define rep(i,n) for(int i=0;i<(int)(n);i++) #define all(v) v.begin(),v.end() #define uniq(v) v.erase(unique(all(v)),v.end()) class BITmin { std::vector bit; public: BITmin(int size) :bit(size + 1, INT_MAX) { } void add(int i, int x) { //i++; while (i < (int)bit.size()) { bit[i] = std::min(bit[i], x); i += i & -i; } } int min(int a)const {//[0,a] //a++; int res = INT_MAX; while (0 < a) { res = std::min(res, bit[a]); a -= a & -a; } return res; } }; int main() { ios::sync_with_stdio(0); cin.tie(0); int n; cin >> n; map>> mp; rep(i,n) { int x, y, z; cin >> x >> y >> z; mp[10000 - x].emplace_back(10000 - y, 10000 - z, i + 1); } vector ans; BITmin bit(10001 + 1); map>>::iterator it; for (it = mp.begin(); it != mp.end(); ++it) { for (const auto &t : it->second) { bit.add(get<0>(t) + 1, get<1>(t)); bit.add(get<0>(t), get<1>(t) + 1); } for (const auto &t : it->second) { if (bit.min(get<0>(t)) > get<1>(t)) { ans.push_back(get<2>(t)); } } for (const auto &t : it->second) { bit.add(get<0>(t), get<1>(t)); } } sort(all(ans)); for (int i: ans) { cout << i << endl; } return 0; }