#include <bits/stdc++.h>
using namespace std; 
int fa[200005];
int a[200005];
int rk[200005];
int vis[200005];
map<int,int> s[200005];
int finds(int x)
{
	if(fa[x]==x)
	{
		return x;
	}
	else
	{
		return fa[x]=finds(fa[x]);
	}
}
void join(int u,int v)
{
	int fu=finds(u);
	int fv=finds(v);
	if(fu!=fv)
	{
		if(rk[fu]<rk[fv])
		{
			fa[fu]=fv;
			for(map<int,int>:: iterator it=s[fu].begin();it!=s[fu].end();it++)
			{
				s[fv][it->first]+=it->second;
			}
			s[fu].clear();			
		}
		else
		{
			fa[fv]=fu;
			for(map<int,int>:: iterator it=s[fv].begin();it!=s[fv].end();it++)
			{
				s[fu][it->first]+=it->second;
			}
			s[fv].clear();		
			if(rk[fu]==rk[fv])
			{
				rk[fu]++;
			}
		}
	}
}
int main()
{
	int n,m;
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&a[i]);
		s[i][a[i]]=1;
	}
	for(int i=1;i<=200000;i++)
	{
		fa[i]=i;
	}
	for(int i=1;i<=m;i++)
	{
		int op,u,v;
		scanf("%d%d%d",&op,&u,&v);
		if(op==1)
		{
			join(u,v);
		}
		else
		{
			int k=finds(u);
	//		printf("%d\n",k);
			map<int,int> ::iterator it=s[k].find(v);
			if(it==s[k].end())
			{
				printf("0\n");
			}
			else
			{
				printf("%d\n",it->second);
			}
		}
	}
	return 0;
}
//伟大的导师，伟大的领袖，伟大的统帅，伟大的舵手
#pragma GCC optimize("Ofast")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,avx2,fma")
#pragma GCC optimize("unroll-loops")
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
char __buf[1<<20],*__p1,*__p2;
//#define getchar() (__p1==__p2?(__p2=__buf+fread(__p1=__buf,1,1<<20,stdin),__p1==__p2?EOF:*__p1++):*__p1++)
int read() {
	int s=0,w=1;
	char ch=getchar();
	while(ch<'0'||ch>'9') {if(ch=='-') w=-1;ch=getchar();}
	while(ch>='0'&&ch<='9') s=(s<<3)+(s<<1)+(ch^48),ch=getchar();
	return s*w;
}
const int maxn = 4e5+10;
int n,G[maxn],ct;
struct node{int x,n;}a[maxn];
bool cmp(node x,node y) {return x.x<y.x;}
signed main() {
	n=read();
	for(int i=1;i<=2*n;i++) a[i]=(node){read(),i};
	sort(a+1,a+1+2*n,cmp);
	for(int i=1;i<=n;i++) G[a[i].n]=1;
	for(int i=1;i<=2*n;i++)
		if(G[i]) {
			if(ct>=0) cout<<'(';
			else cout<<')';
			++ct;
		} else {
			if(ct<=0) cout<<'(';
			else cout<<')';
			--ct;
		}
	return 0;
}
