#include <bits/stdc++.h>
using namespace std;
#define ff first
#define ss second
#define rep(i,n) for(int i=0;i<n;i++)
#define repn(i,a,b) for(int i=a; i<b;i++)
#define opn printf("\n")
typedef pair<int,int> pi;
typedef vector<pi> vp;
typedef vector<vp> vvp;
typedef vector<int> vi;
typedef unsigned long long int ull;
typedef long long int ll;
typedef vector<ll> vl;
typedef vector< vi > vvi;
typedef priority_queue<int> pq;
typedef priority_queue<int, vi , greater<int> >minpq;
typedef priority_queue<pi,vp,greater<pi> > mpq;
int a[100002];
int P[100002];
int R[100002];
map<int,int>M;
int val[100002];
void init(int n){
for(int i=0 ; i<n ;i++){
P[i] = i;
R[i] = 0 ;
}
}
int FindParent(int x){
while(x != P[x]){
x = P[x];
}
return x;
}
int mergeSets(int x, int y){
int px = FindParent(x);
int py = FindParent(y);
if( px == py){
return px;
}
if(R[px] > R[py]){
P[py] = px;
return px;
}
else{
P[px] = py;
if(R[px] == R[py]){
R[py]++;
}
return py;
}
}
void calc(int n){
init(n);
for(int i=0; i<n; i++){
auto it = M.find(a[i]);
if(it == M.end()){
M.insert({a[i],i});
val[i] = a[i];
}
else{
mergeSets(i,it->ss);
}
}
}
int main(){
//ios_base::sync_with_stdio(false);cin.tie(NULL);
int t;
cin>>t;
rep(j,t){
M.clear();
cout<<"Case "<<j+1<<":";opn;
int n,q;
cin>>n>>q;
rep(i,n+1){
P[i] = 0;
R[i] = 0;
val[i] = 0;
}
rep(i,n) cin>>a[i];
calc(n);
rep(i,q){
int type;
cin>>type;
if(type==1){
int x,y;
cin>>x>>y;
if(x==y)
continue;
auto it1 = M.find(x);
auto it2 = M.find(y);
if(it1 != M.end()){
if(it2 != M.end()){
int px = mergeSets(it1->ss,it2->ss);
M.erase(it1);
M.erase(it2);
M.insert({y,px});
val[px] = y;
}
else{
M.insert({y,it1->ss});
val[it1->ss] = y;
M.erase(it1);
}
}
}
else{
int idx;
cin>>idx;
int re = FindParent(idx-1);
cout<<val[re];opn;
}
}
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKCiNkZWZpbmUgZmYgZmlyc3QKI2RlZmluZSBzcyBzZWNvbmQKI2RlZmluZSByZXAoaSxuKSBmb3IoaW50IGk9MDtpPG47aSsrKQojZGVmaW5lIHJlcG4oaSxhLGIpIGZvcihpbnQgaT1hOyBpPGI7aSsrKQojZGVmaW5lIG9wbiBwcmludGYoIlxuIikKCgp0eXBlZGVmIHBhaXI8aW50LGludD4gcGk7CnR5cGVkZWYgdmVjdG9yPHBpPiB2cDsKdHlwZWRlZiB2ZWN0b3I8dnA+IHZ2cDsKdHlwZWRlZiB2ZWN0b3I8aW50PiB2aTsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHVsbDsKdHlwZWRlZiBsb25nIGxvbmcgaW50IGxsOwp0eXBlZGVmIHZlY3RvcjxsbD4gdmw7CnR5cGVkZWYgdmVjdG9yPCB2aSA+IHZ2aTsKdHlwZWRlZiBwcmlvcml0eV9xdWV1ZTxpbnQ+IHBxOwp0eXBlZGVmIHByaW9yaXR5X3F1ZXVlPGludCwgdmkgLCBncmVhdGVyPGludD4gPm1pbnBxOwp0eXBlZGVmIHByaW9yaXR5X3F1ZXVlPHBpLHZwLGdyZWF0ZXI8cGk+ID4gbXBxOwoKaW50IGFbMTAwMDAyXTsKCmludCBQWzEwMDAwMl07CmludCBSWzEwMDAwMl07CgptYXA8aW50LGludD5NOwoKaW50IHZhbFsxMDAwMDJdOwoKdm9pZCBpbml0KGludCBuKXsKCWZvcihpbnQgaT0wIDsgaTxuIDtpKyspewoJCVBbaV0gPSBpOwoJCVJbaV0gPSAwIDsKCX0KfQoKaW50IEZpbmRQYXJlbnQoaW50IHgpewoJd2hpbGUoeCAhPSBQW3hdKXsKCQl4ID0gUFt4XTsKCX0KCXJldHVybiB4Owp9CgppbnQgbWVyZ2VTZXRzKGludCB4LCBpbnQgeSl7CglpbnQgcHggPSBGaW5kUGFyZW50KHgpOwoJaW50IHB5ID0gRmluZFBhcmVudCh5KTsKCWlmKCBweCA9PSBweSl7CgkJcmV0dXJuIHB4OwoJfQoJCglpZihSW3B4XSA+IFJbcHldKXsKCQlQW3B5XSA9IHB4OwoJCXJldHVybiBweDsKCX0KCWVsc2V7CgkJUFtweF0gPSBweTsKCQlpZihSW3B4XSA9PSBSW3B5XSl7CgkJCVJbcHldKys7CgkJfQoJCXJldHVybiBweTsKCX0KCQp9Cgp2b2lkIGNhbGMoaW50IG4pewoJaW5pdChuKTsKCWZvcihpbnQgaT0wOyBpPG47IGkrKyl7CgkJYXV0byBpdCA9IE0uZmluZChhW2ldKTsKCQlpZihpdCA9PSBNLmVuZCgpKXsKCQkJTS5pbnNlcnQoe2FbaV0saX0pOwoJCQl2YWxbaV0gPSBhW2ldOyAKCQl9CgkJZWxzZXsKCQkJbWVyZ2VTZXRzKGksaXQtPnNzKTsKCQl9Cgl9Cn0KCmludCBtYWluKCl7CgkvL2lvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpO2Npbi50aWUoTlVMTCk7CglpbnQgdDsKCWNpbj4+dDsKCXJlcChqLHQpewoJCU0uY2xlYXIoKTsKCQljb3V0PDwiQ2FzZSAiPDxqKzE8PCI6IjtvcG47CgkJaW50IG4scTsKCQljaW4+Pm4+PnE7CgkJcmVwKGksbisxKXsKCQkJUFtpXSA9IDA7CgkJCVJbaV0gPSAwOwoJCQl2YWxbaV0gPSAwOwoJCX0KCQlyZXAoaSxuKSBjaW4+PmFbaV07CgkJY2FsYyhuKTsKCQlyZXAoaSxxKXsKCQkJCgkJCWludCB0eXBlOwoJCQljaW4+PnR5cGU7CgkJCWlmKHR5cGU9PTEpewoJCQkJaW50IHgseTsKCQkJCWNpbj4+eD4+eTsKCQkJCWlmKHg9PXkpCgkJCQkJY29udGludWU7CgkJCQlhdXRvIGl0MSA9IE0uZmluZCh4KTsKCQkJCWF1dG8gaXQyID0gTS5maW5kKHkpOwoJCQkJCgkJCQlpZihpdDEgIT0gTS5lbmQoKSl7CgkJCQkJaWYoaXQyICE9IE0uZW5kKCkpewoJCQkJCQlpbnQgcHggPSBtZXJnZVNldHMoaXQxLT5zcyxpdDItPnNzKTsKCQkJCQkJTS5lcmFzZShpdDEpOwoJCQkJCQlNLmVyYXNlKGl0Mik7CgkJCQkJCU0uaW5zZXJ0KHt5LHB4fSk7CgkJCQkJCXZhbFtweF0gPSB5OwoJCQkJCX0KCQkJCQllbHNlewoJCQkJCQlNLmluc2VydCh7eSxpdDEtPnNzfSk7CgkJCQkJCXZhbFtpdDEtPnNzXSA9IHk7IAoJCQkJCQlNLmVyYXNlKGl0MSk7CgkJCQkJfQoJCQkJfSAKCQkJfQoJCQllbHNlewoJCQkJaW50IGlkeDsKCQkJCWNpbj4+aWR4OwoJCQkJaW50IHJlID0gRmluZFBhcmVudChpZHgtMSk7CgkJCQljb3V0PDx2YWxbcmVdO29wbjsKCQkJfQoJCX0KCX0KCQp9CgoJCgoJCgo=