#include "bits/stdc++.h"
using namespace std;
#define fi first
#define se second
#define pii pair<int,int>
#define all(x) x.begin(), x.end()
#define sz(x) (int)x.size()
#define pb push_back
#define ll long long
const int MAXN = 200005;
const int MAX_COLORS = 400005; // N + Q
int N, Q;
vector<int> adj[MAXN];
int color[MAXN];
vector<int> vertices_of_color[MAX_COLORS];
int dist[MAXN];
void bfs() {
for (int i = 1; i <= N; ++i) {
dist[i] = -1;
}
queue<int> q;
dist[1] = 0;
q.push(1);
while (!q.empty()) {
int u = q.front();
q.pop();
for (int v : adj[u]) {
if (dist[v] == -1) {
dist[v] = dist[u] + 1;
q.push(v);
}
}
}
}
signed main(){
ios_base::sync_with_stdio(NULL);
cin.tie(NULL);
if(fopen("TASK.INP", "r")){
freopen("TASK.INP", "r", stdin);
freopen("TASK.ANS", "w", stdout);
}
cin >> N >> Q;
for (int i = 1; i <= N; ++i) {
cin >> color[i];
vertices_of_color[color[i]].pb(i);
}
for (int i = 0; i < Q; ++i) {
int type;
cin >> type;
if (type == 1) {
int x, y;
cin >> x >> y;
if (x == y) continue; // Tối ưu nhỏ, tránh tự nối
for (int u : vertices_of_color[x]) {
for (int v : vertices_of_color[y]) {
adj[u].pb(v);
adj[v].pb(u);
}
}
} else {
int u, v;
cin >> u >> v;
if (u == v) continue;
// Chuyển tất cả đỉnh từ màu u sang màu v
for (int node : vertices_of_color[u]) {
color[node] = v;
vertices_of_color[v].pb(node);
}
vertices_of_color[u].clear();
}
}
bfs();
for (int i = 2; i <= N; ++i) {
cout << dist[i] << (i == N ? "" : " ");
}
cout << "\n";
}
I2luY2x1ZGUgImJpdHMvc3RkYysrLmgiCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCiNkZWZpbmUgcGlpIHBhaXI8aW50LGludD4gCiNkZWZpbmUgYWxsKHgpIHguYmVnaW4oKSwgeC5lbmQoKQojZGVmaW5lIHN6KHgpIChpbnQpeC5zaXplKCkKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBsbCBsb25nIGxvbmcKCmNvbnN0IGludCBNQVhOID0gMjAwMDA1Owpjb25zdCBpbnQgTUFYX0NPTE9SUyA9IDQwMDAwNTsgLy8gTiArIFEKCmludCBOLCBROwp2ZWN0b3I8aW50PiBhZGpbTUFYTl07CmludCBjb2xvcltNQVhOXTsKdmVjdG9yPGludD4gdmVydGljZXNfb2ZfY29sb3JbTUFYX0NPTE9SU107CmludCBkaXN0W01BWE5dOwoKdm9pZCBiZnMoKSB7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBOOyArK2kpIHsKICAgICAgICBkaXN0W2ldID0gLTE7CiAgICB9CiAgICBxdWV1ZTxpbnQ+IHE7CgogICAgZGlzdFsxXSA9IDA7CiAgICBxLnB1c2goMSk7CgogICAgd2hpbGUgKCFxLmVtcHR5KCkpIHsKICAgICAgICBpbnQgdSA9IHEuZnJvbnQoKTsKICAgICAgICBxLnBvcCgpOwoKICAgICAgICBmb3IgKGludCB2IDogYWRqW3VdKSB7CiAgICAgICAgICAgIGlmIChkaXN0W3ZdID09IC0xKSB7CiAgICAgICAgICAgICAgICBkaXN0W3ZdID0gZGlzdFt1XSArIDE7CiAgICAgICAgICAgICAgICBxLnB1c2godik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KCnNpZ25lZCBtYWluKCl7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKE5VTEwpOwogICAgY2luLnRpZShOVUxMKTsKICAgIGlmKGZvcGVuKCJUQVNLLklOUCIsICJyIikpewogICAgICAgIGZyZW9wZW4oIlRBU0suSU5QIiwgInIiLCBzdGRpbik7CiAgICAgICAgZnJlb3BlbigiVEFTSy5BTlMiLCAidyIsIHN0ZG91dCk7CiAgICB9CgogICAgY2luID4+IE4gPj4gUTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IE47ICsraSkgewogICAgICAgIGNpbiA+PiBjb2xvcltpXTsKICAgICAgICB2ZXJ0aWNlc19vZl9jb2xvcltjb2xvcltpXV0ucGIoaSk7CiAgICB9CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBROyArK2kpIHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICBjaW4gPj4gdHlwZTsKICAgICAgICBpZiAodHlwZSA9PSAxKSB7CiAgICAgICAgICAgIGludCB4LCB5OwogICAgICAgICAgICBjaW4gPj4geCA+PiB5OwogICAgICAgICAgICBpZiAoeCA9PSB5KSBjb250aW51ZTsgLy8gVOG7kWkgxrB1IG5o4buPLCB0csOhbmggdOG7sSBu4buRaQogICAgICAgICAgICBmb3IgKGludCB1IDogdmVydGljZXNfb2ZfY29sb3JbeF0pIHsKICAgICAgICAgICAgICAgIGZvciAoaW50IHYgOiB2ZXJ0aWNlc19vZl9jb2xvclt5XSkgewogICAgICAgICAgICAgICAgICAgIGFkalt1XS5wYih2KTsKICAgICAgICAgICAgICAgICAgICBhZGpbdl0ucGIodSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpbnQgdSwgdjsKICAgICAgICAgICAgY2luID4+IHUgPj4gdjsKICAgICAgICAgICAgaWYgKHUgPT0gdikgY29udGludWU7CgogICAgICAgICAgICAvLyBDaHV54buDbiB04bqldCBj4bqjIMSR4buJbmggdOG7qyBtw6B1IHUgc2FuZyBtw6B1IHYKICAgICAgICAgICAgZm9yIChpbnQgbm9kZSA6IHZlcnRpY2VzX29mX2NvbG9yW3VdKSB7CiAgICAgICAgICAgICAgICBjb2xvcltub2RlXSA9IHY7CiAgICAgICAgICAgICAgICB2ZXJ0aWNlc19vZl9jb2xvclt2XS5wYihub2RlKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB2ZXJ0aWNlc19vZl9jb2xvclt1XS5jbGVhcigpOwogICAgICAgIH0KICAgIH0KCiAgICBiZnMoKTsKCiAgICBmb3IgKGludCBpID0gMjsgaSA8PSBOOyArK2kpIHsKICAgICAgICBjb3V0IDw8IGRpc3RbaV0gPDwgKGkgPT0gTiA/ICIiIDogIiAiKTsKICAgIH0KICAgIGNvdXQgPDwgIlxuIjsKICAgIAp9