#include #include #include int main () { unsigned n, m; std::cin >> n >> m; std::vector> grooves (n+1); for (unsigned i = 0; i < m; ++i) { unsigned xFrom, yFrom, xTo, yTo; std::cin >> xFrom >> yFrom >> xTo >> yTo; grooves[xFrom][yFrom] = xTo; grooves[xTo][yTo] = xFrom; } std::map ids; for (unsigned start = 1; start <= n; ++start) { unsigned line = start; unsigned dist = 0; while (true) { auto it = grooves[line].lower_bound(dist+1); if (it == grooves[line].end()) { ids[start] = line; break; } line = it->second; dist = it->first; } } for (unsigned i = 1; i <= n; ++i) { std::cout << ids[i] << '\n'; } return 0; }