#include #include #include struct Groove { size_t start; size_t end; }; int main() { size_t hunters, grooves_count; std::cin >> hunters >> grooves_count; std::map> grooves; for (size_t i = 0; i < grooves_count; i++) { size_t startx; size_t endx; size_t y; std::cin >> startx >> y >> endx >> y; if (!grooves.count(y)) { grooves[y] = std::vector(); } grooves[y].push_back(Groove{ start: startx, end: endx, }); } std::vector hunterlist; hunterlist.reserve(hunters); for (size_t i = 1; i <= hunters; i++) { hunterlist.push_back(i); } for (auto iter = grooves.rbegin(); iter != grooves.rend(); ++iter) { const auto& layer = *iter; for (const auto &groove : layer.second) { std::swap(hunterlist[groove.start - 1], hunterlist[groove.end - 1]); } } for (size_t hunter : hunterlist) { std::cout << hunter << std::endl; } }