#include<bits/stdc++.h>
using namespace std;
int top[100005],br[100005],sn[100005],vl[100005],vis[100005],i,op,j,u,v,w,tmp,n,m;
int find(int u)
{
if(top[u] == u)return u;
else return top[u] = find(top[u]);
}
int mer(int x,int y)
{
if(!x||!y)return x|y;
if(vl[x]>vl[y])x^=y^=x^=y;
br[y] = sn[x],sn[x] = y,top[y] = x;
return x;
}
int merge(int u)
{
if(u == 0||br[u] == 0)return u;
v = br[u],w = br[v],br[u] = br[v] = 0;
return top[u] = top[v] = mer(merge(w),mer(u,v));
}
int del(int u)
{
return top[sn[u]] = merge(sn[u]);
}
int main()
{
cin>>n>>m;
for(i = 1;i<=n;i++)
cin>>vl[i],top[i] = i;
while(m--)
{
cin>>op;
if(op&1)
{
cin>>u>>v;
if(!vis[u]&&!vis[v])
{
u = find(u),v = find(v);
if(u!=v)top[u] = mer(u,v);
}
}
else
{
cin>>u;
if(!vis[u])u = find(u),vis[u] = 1,cout<<vl[u]<<'\n',del(u);
else cout<<"-1\n";
}
}
}