#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 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()) #define MOD 1000000007 class UnionFind{ vector par; vector _size; public: UnionFind(int max_n) :par(max_n), _size(max_n){} void init(int n){ for (int i = 0; i>n>>m; UnionFind uf(n); uf.init(n); rep(i,m){ int a,b; cin>>a>>b; a--;b--; int sa,sb; a = uf.find(a); b = uf.find(b); if (a==b)continue; sa = uf.size(a); sb = uf.size(b); if (sa < sb){ uf.unite(b,a); } else if (sa > sb){ uf.unite(a, b); } else{ uf.unite(min(a,b), max(a,b)); } } rep(i,n){ cout << uf.find(i)+1<