#include #include #include #include using namespace std; struct A{ size_t start; size_t end; size_t level; // bool operator<(A oth){ // return level < oth.level; // } }; int main() { size_t n, m; cin >> n >> m; // x odrinate vector position; for (size_t i = 0; i < n; i++) { // for x = 0, we have hunter 1 ... position.push_back(i); } vector groves(m); size_t xp, y, xq; for(size_t i = 0; i < m; i++){ cin >> xp >> y >> xq >> y; // create groves endpoint by the yp level groves[i] ={min(xp,xq)-1,max(xp, xq)-1, y}; } sort(groves.begin(), groves.end(), [](A a, A b) { return a.level < b.level; }); for (size_t i = 0; i < m; i++) { // swap working 100% // cout << it.first << ' ' << it.second << endl; swap(position[groves[i].start], position[groves[i].end]); } vector to_print(n); for (size_t i = 0; i < n; i++) { to_print[position[i]] = i+1; } for (auto & it : to_print) { cout << it << '\n'; } return 0; }