/*
* Author: Geeza
*/
#include <bits/stdc++.h>
#define ld long double
#define ll long long
#define pb push_back
#define fin(a, n) for(int i = a; i < n; i++)
#define fjn(a, n) for(int j = a; j < n; j++)
#define all(a) a.begin(),a.end()
#define allr(a) a.rbegin(),a.rend()
#define FAST ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr)
using namespace std;
const double PI = acos(-1);
const int N = 100000;
const ll oo = 0x3f3f3f3f3f3f3f3f;
const int MOD = 1000000007, inf = 1e6;
string di[] = {"D","L", "U", "R", "UL", "UR", "DL", "DR"};
int dx[] = {+1, +0, +0, -1, -1, -1, +1, +1};
int dy[] = {+0, -1, +1, +0, -1, +1, -1, +1};
char dc[] = {'D', 'L', 'R', 'U'};
struct DSU {
vector<ll> parent, size, id;
DSU(ll n) : parent(n + 1), size(n + 1, 1), id(n+1, -1){
iota(parent.begin(), parent.end(), 0);
}
ll find(ll x) {
if (x == parent[x]) return x;
return parent[x] = find(parent[x]);
}
bool unite(ll x, ll y, ll val) {
x = find(x);
y = find(y);
if (x == y) return false;
id[x] = id[y] = val;
if (size[x] < size[y]) swap(x, y);
parent[y] = x;
size[x] += size[y];
return true;
}
};
void solve() {
ll n, q; cin >> n >> q;
DSU dsu(n);
vector<ll> v(n);
map<ll, set<ll>> mp;
map<ll, ll> idx;
fin(0, n) cin >> v[i], mp[v[i]].insert(i), idx[v[i]] = i;
for (auto [x, s] : mp) {
ll l = -1;
for (auto i : s) {
if (l == -1) l = i;
dsu.unite(i, l, l);
}
dsu.id[dsu.find(l)] = l;
}
fin(0, q) {
int t; cin >> t;
if (t == 1) {
ll x, y; cin >> x >> y;
if (idx.find(x) == idx.end()) continue;
ll lx = dsu.find(idx[x]);
if (idx.find(y) == idx.end()) {
v[idx[x]] = y;
idx[y] = idx[x];
dsu.unite(lx, idx[y], idx[y]);
idx.erase(x);
}
else {
ll ly = dsu.find(idx[y]);
dsu.unite(lx, ly, ly);
idx.erase(x);
}
}
else {
ll x; cin >> x; --x;
cout << v[dsu.id[dsu.find(x)]] << "\n";
}
}
}
int main() {
FAST;
#ifndef ONLINE_JUDGE
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
#endif
int tt = 1, c = 1; cin >> tt;
while(tt--){
cout << "Case " << c++ << ":\n";
solve();
}
return 0;
}
LyoKKiBBdXRob3I6IEdlZXphCiovCgojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KCiNkZWZpbmUgbGQgbG9uZyBkb3VibGUKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBmaW4oYSwgbikgZm9yKGludCBpID0gYTsgaSA8IG47IGkrKykKI2RlZmluZSBmam4oYSwgbikgZm9yKGludCBqID0gYTsgaiA8IG47IGorKykKI2RlZmluZSBhbGwoYSkgYS5iZWdpbigpLGEuZW5kKCkKI2RlZmluZSBhbGxyKGEpIGEucmJlZ2luKCksYS5yZW5kKCkKI2RlZmluZSBGQVNUIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpLCBjaW4udGllKG51bGxwdHIpLCBjb3V0LnRpZShudWxscHRyKQoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGRvdWJsZSBQSSA9IGFjb3MoLTEpOwpjb25zdCBpbnQgTiA9IDEwMDAwMDsKY29uc3QgbGwgb28gPSAweDNmM2YzZjNmM2YzZjNmM2Y7CmNvbnN0IGludCBNT0QgPSAxMDAwMDAwMDA3LCBpbmYgPSAxZTY7CgpzdHJpbmcgZGlbXSA9IHsiRCIsIkwiLCAiVSIsICJSIiwgIlVMIiwgIlVSIiwgIkRMIiwgIkRSIn07CmludCBkeFtdID0geysxLCArMCwgKzAsIC0xLCAtMSwgLTEsICsxLCArMX07CmludCBkeVtdID0geyswLCAtMSwgKzEsICswLCAtMSwgKzEsIC0xLCArMX07CmNoYXIgZGNbXSA9IHsnRCcsICdMJywgJ1InLCAnVSd9OwoKc3RydWN0IERTVSB7CiAgICB2ZWN0b3I8bGw+IHBhcmVudCwgc2l6ZSwgaWQ7CiAgICBEU1UobGwgbikgOiBwYXJlbnQobiArIDEpLCBzaXplKG4gKyAxLCAxKSwgaWQobisxLCAtMSl7CiAgICAgICAgaW90YShwYXJlbnQuYmVnaW4oKSwgcGFyZW50LmVuZCgpLCAwKTsKICAgIH0KCiAgICBsbCBmaW5kKGxsIHgpIHsKICAgICAgICBpZiAoeCA9PSBwYXJlbnRbeF0pIHJldHVybiB4OwogICAgICAgIHJldHVybiBwYXJlbnRbeF0gPSBmaW5kKHBhcmVudFt4XSk7CiAgICB9CgogICAgYm9vbCB1bml0ZShsbCB4LCBsbCB5LCBsbCB2YWwpIHsKICAgICAgICB4ID0gZmluZCh4KTsKICAgICAgICB5ID0gZmluZCh5KTsKICAgICAgICBpZiAoeCA9PSB5KSByZXR1cm4gZmFsc2U7CiAgICAgICAgaWRbeF0gPSBpZFt5XSA9IHZhbDsKICAgICAgICBpZiAoc2l6ZVt4XSA8IHNpemVbeV0pIHN3YXAoeCwgeSk7CiAgICAgICAgcGFyZW50W3ldID0geDsKICAgICAgICBzaXplW3hdICs9IHNpemVbeV07CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9Cn07Cgp2b2lkIHNvbHZlKCkgewogICAgbGwgbiwgcTsgY2luID4+IG4gPj4gcTsKICAgIERTVSBkc3Uobik7CiAgICB2ZWN0b3I8bGw+IHYobik7CiAgICBtYXA8bGwsIHNldDxsbD4+IG1wOwogICAgbWFwPGxsLCBsbD4gaWR4OwogICAgZmluKDAsIG4pIGNpbiA+PiB2W2ldLCBtcFt2W2ldXS5pbnNlcnQoaSksIGlkeFt2W2ldXSA9IGk7CgogICAgZm9yIChhdXRvIFt4LCBzXSA6IG1wKSB7CiAgICAgICAgbGwgbCA9IC0xOwogICAgICAgIGZvciAoYXV0byBpIDogcykgewogICAgICAgICAgICBpZiAobCA9PSAtMSkgbCA9IGk7CiAgICAgICAgICAgIGRzdS51bml0ZShpLCBsLCBsKTsKICAgICAgICB9CiAgICAgICAgZHN1LmlkW2RzdS5maW5kKGwpXSA9IGw7CiAgICB9CgogICAgZmluKDAsIHEpIHsKICAgICAgICBpbnQgdDsgY2luID4+IHQ7CiAgICAgICAgaWYgKHQgPT0gMSkgewogICAgICAgICAgICBsbCB4LCB5OyBjaW4gPj4geCA+PiB5OwogICAgICAgICAgICBpZiAoaWR4LmZpbmQoeCkgPT0gaWR4LmVuZCgpKSBjb250aW51ZTsKICAgICAgICAgICAgbGwgbHggPSBkc3UuZmluZChpZHhbeF0pOwogICAgICAgICAgICBpZiAoaWR4LmZpbmQoeSkgPT0gaWR4LmVuZCgpKSB7CiAgICAgICAgICAgICAgICB2W2lkeFt4XV0gPSB5OwogICAgICAgICAgICAgICAgaWR4W3ldID0gaWR4W3hdOwogICAgICAgICAgICAgICAgZHN1LnVuaXRlKGx4LCBpZHhbeV0sIGlkeFt5XSk7CiAgICAgICAgICAgICAgICBpZHguZXJhc2UoeCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBsbCBseSA9IGRzdS5maW5kKGlkeFt5XSk7CiAgICAgICAgICAgICAgICBkc3UudW5pdGUobHgsIGx5LCBseSk7CiAgICAgICAgICAgICAgICBpZHguZXJhc2UoeCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGxsIHg7IGNpbiA+PiB4OyAtLXg7CiAgICAgICAgICAgIGNvdXQgPDwgdltkc3UuaWRbZHN1LmZpbmQoeCldXSA8PCAiXG4iOwogICAgICAgIH0KICAgIH0KfQoKaW50IG1haW4oKSB7CiAgICBGQVNUOwojaWZuZGVmIE9OTElORV9KVURHRQogICAgZnJlb3BlbigiaW5wdXQudHh0IiwiciIsc3RkaW4pOwogICAgZnJlb3Blbigib3V0cHV0LnR4dCIsInciLHN0ZG91dCk7CiNlbmRpZgogICAgaW50IHR0ID0gMSwgYyA9IDE7IGNpbiA+PiB0dDsKICAgIHdoaWxlKHR0LS0pewogICAgICAgIGNvdXQgPDwgIkNhc2UgIiA8PCBjKysgPDwgIjpcbiI7CiAgICAgICAgc29sdmUoKTsKICAgIH0KICAgIHJldHVybiAwOwp9