using System;

namespace NocnaVoznja
{
    class Program
    {
        static void Main(string[] args)
        {
            int n = int.Parse(Console.ReadLine());
            int[] naselja = new int[n];
            string[] str = Console.ReadLine().Split();
            for(int i=0;i<n;i++)
            {
                naselja[i] = int.Parse(str[i]);
            }
            int[] u = new int[n - 1];
            int[] v = new int[n - 1];
            for(int i=0;i<n-1;i++)
            {
                string[] str2 = Console.ReadLine().Split();
                u[i] = int.Parse(str2[0]);
                v[i] = int.Parse(str2[1]);
            }
            int q = int.Parse(Console.ReadLine());
            int[,] dog = new int[q, 4];
            for(int i=0;i<q;i++)
            {
                string[] str2 = Console.ReadLine().Split();
                for (int j = 0; j < str2.Length; j++)
                {
                    dog[i, j] = int.Parse(str2[j]);
                }
            }
            int a, b, ia=0, ib=0, l, r, x, rast=0;
            for(int i=0;i<q;i++)
            {
                if(dog[i,0]==1)
                {
                    a = dog[i, 1];
                    b = dog[i, 2];
                    for(int j=0;j<n;j++)
                    {
                        if(naselja[j]==a)
                        {
                            ia = j;
                        }
                        else if(naselja[j]==b)
                        {
                            ib = j;
                        }
                    }
                    int pom = naselja[ia];
                    naselja[ia] = naselja[ib];
                    naselja[ib] = pom;
                    for(int j=0;j<n;j++)
                    {
                        Console.Write(naselja[j] + " ");
                    }
                    Console.WriteLine();
                }
                else if(dog[i,0]==2)
                {
                    x = dog[i, 3];
                    l = dog[i, 1];
                    r = dog[i, 2];
                    for(int j=0;j<n;j++)
                    {
                        if(naselja[j]==l)
                        {
                            rast += j;
                        }
                        else if(naselja[j]==r)
                        {
                            rast -= j;
                        }
                    }
                    rast = Math.Abs(rast);
                    Console.WriteLine(rast);
                    rast = 0;
                }
            }
            Console.ReadLine();
        }
    }
}