func_code_string: #include <bits/stdc++.h>   using namespace std;   const int maxn = 1e6 + 10;   int n, m;   int a[maxn], par[maxn], t[maxn];   vector<int> g[maxn];   int get_par(int v) { return (par[v] == -1) ? v : par[v] = get_par(par[v]); }   void merge(int u, int v) {     u = get_par(u);     v = get_par(v);     if (v == u) return;     par[u] = v;   }   int main() {     ios_base::sync_with_stdio(false), cin.tie(NULL), cout.tie(NULL);     cin >> n >> m;     memset(par, -1, sizeof par);     for (int i = 1; i <= n; i++) cin >> a[i];     for (int i = 0; i < m; i++) {       int u, v;       cin >> u >> v;       merge(u, v);     }     for (int i = 1; i <= n; i++) g[get_par(i)].push_back(a[i]);     for (int i = 1; i <= n; i++) sort(g[i].begin(), g[i].end());     for (int i = 1; i <= n; i++) {       cout << g[get_par(i)].back() <<    ;       g[get_par(i)].pop_back();     }     cout <<   n ;     return 0;   }   