#include <bits/stdc++.h>
#define pb push_back
#define pf push_front
#define fi first
#define se second
#define maxn 4050

using namespace std;
typedef long long ll;

int n, a, b, t, k12, l, r, x;
int s[maxn];
vector<vector<int>> v;
int d[maxn][maxn];
queue<int> q;
int bio[maxn];

int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cin >> n;
	for(int i=0; i<=n; i++)
    {
        for(int j=0; j<=n; j++) d[i][j]=0;
    }
    v.pb({});
	for(int i=0; i<n; i++)
    {
        cin >> s[i];
        v.pb({});
    }
    for(int i=0; i<n-1; i++)
    {
        cin >> a >> b;
        v[a].pb(b);
        v[b].pb(a);
    }
    for(int i=1; i<=n; i++)
    {
        for(int j=0; j<=n; j++)
        {
            bio[j]=false;
        }
        d[i][i]=0;
        bio[i]=true;
        q.push(i);
        while(!q.empty())
        {
            int p=q.front();
            q.pop();
            for(auto u:v[p])
            {
                if(!bio[u])
                {
                    bio[u]=true;
                    d[i][u]=d[i][p]+1;
                    q.push(u);
                }
            }
        }
    }
    cin >> t;
    while(t--)
    {
        cin >> k12;
        if(k12==1)
        {
            cin >> a >> b;
            swap(s[a-1],s[b-1]);
        }
        else
        {
            cin >> l >> r >> x;
            l--;
            r--;
            int res=0;
            for(int i=l; i<=r; i++)
            {
                res=max(d[x][s[i]],res);
            }
            cout << res << "\n";
        }
    }
}