// this is TooDifficult's solution
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <vector>
#include <string>
#include <map>
#include <set>
#include <cassert>
using namespace std;
#define rep(i,a,n) for (int i=a;i<n;i++)
#define per(i,a,n) for (int i=n-1;i>=a;i--)
#define pb push_back
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define fi first
#define se second
#define SZ(x) ((int)(x).size())
typedef vector<int> VI;
typedef long long ll;
typedef pair<int,int> PII;
const ll mod=1000000007;
const ll inf=1ll<<60;
ll powmod(ll a,ll b) {ll res=1;a%=mod; assert(b>=0); for(;b;b>>=1){if(b&1)res=res*a%mod;a=a*a%mod;}return res;}
// head
const int N=201000;
int q[N],hs[N],hv[N],dep[N],id[N],l[N],r[N],bel[N],s[N],f[N],pos[N],vl[N];
int n,m,Q,tot,u,v,k,ty;
VI e[N],vec[N],ret;
pair<ll,int> ind[N],z;
struct node {
ll fg;
pair<ll,int> s;
}nd[4*N];
void upd(int p) {
nd[p].s=min(nd[p+p].s,nd[p+p+1].s);
}
void setf(int p,ll v) {
nd[p].fg+=v; nd[p].s.fi+=v;
}
void build(int p,int l,int r) {
nd[p].fg=0;
if (l==r) {
nd[p].s=ind[l];
} else {
int md=(l+r)>>1;
build(p+p,l,md);
build(p+p+1,md+1,r);
upd(p);
}
}
void push(int p) {
if (nd[p].fg) {
setf(p+p,nd[p].fg);
setf(p+p+1,nd[p].fg);
nd[p].fg=0;
}
}
pair<ll,int> query(int p,int l,int r,int tl,int tr) {
if (tl==l&&tr==r) return nd[p].s;
else {
push(p);
int md=(l+r)>>1;
if (tr<=md) return query(p+p,l,md,tl,tr);
else if (tl>md) return query(p+p+1,md+1,r,tl,tr);
else return min(query(p+p,l,md,tl,md),query(p+p+1,md+1,r,md+1,tr));
}
}
void modify(int p,int l,int r,int tl,int tr,ll v) {
if (tl>tr) return;
if (tl==l&&tr==r) return setf(p,v);
else {
push(p);
int md=(l+r)>>1;
if (tr<=md) modify(p+p,l,md,tl,tr,v);
else if (tl>md) modify(p+p+1,md+1,r,tl,tr,v);
else modify(p+p,l,md,tl,md,v),modify(p+p+1,md+1,r,md+1,tr,v);
upd(p);
}
}
void dfs(int u,int f) {
id[l[u]=++tot]=u; ind[tot]=mp(inf,0);
for (auto v:vec[u]) {
ind[++tot]=mp(v,v);
pos[v]=tot;
}
vl[u]=tot;
dep[u]=dep[f]+1;
if (hv[u]) dfs(hv[u],u);
rep(j,0,SZ(e[u])) if (e[u][j]!=f&&e[u][j]!=hv[u])
dfs(e[u][j],u);
r[u]=tot;
}
void HLDoT(int rt) {
int t=1;
q[0]=rt;
rep(i,0,n) {
int u=q[i];
rep(j,0,SZ(e[u])) if (e[u][j]!=f[u])
f[e[u][j]]=u,dep[q[t++]=e[u][j]]=dep[u]+1;
}
per(i,0,n) {
int u=q[i],p=f[u];
s[u]++,s[p]+=s[u];
if (!l[u]) l[u]=1;
if (hs[p]<s[u]) hs[p]=s[u],hv[p]=u,l[p]=l[u]+1;
}
rep(i,0,n) {
int u=q[i];
if (!bel[u]) bel[u]=u;
if (hv[u]) bel[hv[u]]=bel[u];
}
dfs(rt,0);
}
void query(int u,int v) {
while (1) {
if (bel[u]==bel[v]) {
if (dep[u]<dep[v]) swap(u,v);
z=min(z,query(1,1,m,l[v],vl[u]));
break;
} else {
if (dep[bel[u]]<dep[bel[v]]) swap(u,v);
z=min(z,query(1,1,m,l[bel[u]],vl[u]));
u=f[bel[u]];
}
}
}
int main() {
scanf("%d%d%d",&n,&m,&Q);
rep(i,1,n) {
scanf("%d%d",&u,&v);
e[u].pb(v); e[v].pb(u);
}
rep(i,0,m) {
scanf("%d",&u);
vec[u].pb(i+1);
}
HLDoT(1);
m=tot;
build(1,1,m);
rep(i,0,Q) {
scanf("%d",&ty);
if (ty==1) {
scanf("%d%d%d",&u,&v,&k);
ret.clear();
while (k>0) {
z=mp(inf,0);
query(u,v);
if (z.fi>=1ll<<50) break;
--k;
ret.pb(z.se);
modify(1,1,m,pos[z.se],pos[z.se],inf);
}
printf("%d",SZ(ret));
for (auto u:ret) printf(" %d",u);
puts("");
} else {
scanf("%d%d",&u,&k);
modify(1,1,m,l[u],r[u],k);
}
}
}
Ly8gdGhpcyBpcyBUb29EaWZmaWN1bHQncyBzb2x1dGlvbgojaW5jbHVkZSA8Y3N0ZGlvPgojaW5jbHVkZSA8Y3N0cmluZz4KI2luY2x1ZGUgPGNtYXRoPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8bWFwPgojaW5jbHVkZSA8c2V0PgojaW5jbHVkZSA8Y2Fzc2VydD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSByZXAoaSxhLG4pIGZvciAoaW50IGk9YTtpPG47aSsrKQojZGVmaW5lIHBlcihpLGEsbikgZm9yIChpbnQgaT1uLTE7aT49YTtpLS0pCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgbXAgbWFrZV9wYWlyCiNkZWZpbmUgYWxsKHgpICh4KS5iZWdpbigpLCh4KS5lbmQoKQojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCiNkZWZpbmUgU1ooeCkgKChpbnQpKHgpLnNpemUoKSkKdHlwZWRlZiB2ZWN0b3I8aW50PiBWSTsKdHlwZWRlZiBsb25nIGxvbmcgbGw7CnR5cGVkZWYgcGFpcjxpbnQsaW50PiBQSUk7CmNvbnN0IGxsIG1vZD0xMDAwMDAwMDA3Owpjb25zdCBsbCBpbmY9MWxsPDw2MDsKbGwgcG93bW9kKGxsIGEsbGwgYikge2xsIHJlcz0xO2ElPW1vZDsgYXNzZXJ0KGI+PTApOyBmb3IoO2I7Yj4+PTEpe2lmKGImMSlyZXM9cmVzKmElbW9kO2E9YSphJW1vZDt9cmV0dXJuIHJlczt9Ci8vIGhlYWQKCmNvbnN0IGludCBOPTIwMTAwMDsKaW50IHFbTl0saHNbTl0saHZbTl0sZGVwW05dLGlkW05dLGxbTl0scltOXSxiZWxbTl0sc1tOXSxmW05dLHBvc1tOXSx2bFtOXTsKaW50IG4sbSxRLHRvdCx1LHYsayx0eTsKVkkgZVtOXSx2ZWNbTl0scmV0OwpwYWlyPGxsLGludD4gaW5kW05dLHo7CnN0cnVjdCBub2RlIHsKCWxsIGZnOwoJcGFpcjxsbCxpbnQ+IHM7Cn1uZFs0Kk5dOwp2b2lkIHVwZChpbnQgcCkgewoJbmRbcF0ucz1taW4obmRbcCtwXS5zLG5kW3ArcCsxXS5zKTsKfQp2b2lkIHNldGYoaW50IHAsbGwgdikgewoJbmRbcF0uZmcrPXY7IG5kW3BdLnMuZmkrPXY7Cn0Kdm9pZCBidWlsZChpbnQgcCxpbnQgbCxpbnQgcikgewoJbmRbcF0uZmc9MDsKCWlmIChsPT1yKSB7CgkJbmRbcF0ucz1pbmRbbF07Cgl9IGVsc2UgewoJCWludCBtZD0obCtyKT4+MTsKCQlidWlsZChwK3AsbCxtZCk7CgkJYnVpbGQocCtwKzEsbWQrMSxyKTsKCQl1cGQocCk7Cgl9Cn0Kdm9pZCBwdXNoKGludCBwKSB7CglpZiAobmRbcF0uZmcpIHsKCQlzZXRmKHArcCxuZFtwXS5mZyk7CgkJc2V0ZihwK3ArMSxuZFtwXS5mZyk7CgkJbmRbcF0uZmc9MDsKCX0KfQpwYWlyPGxsLGludD4gcXVlcnkoaW50IHAsaW50IGwsaW50IHIsaW50IHRsLGludCB0cikgewoJaWYgKHRsPT1sJiZ0cj09cikgcmV0dXJuIG5kW3BdLnM7CgllbHNlIHsKCQlwdXNoKHApOwoJCWludCBtZD0obCtyKT4+MTsKCQlpZiAodHI8PW1kKSByZXR1cm4gcXVlcnkocCtwLGwsbWQsdGwsdHIpOwoJCWVsc2UgaWYgKHRsPm1kKSByZXR1cm4gcXVlcnkocCtwKzEsbWQrMSxyLHRsLHRyKTsKCQllbHNlIHJldHVybiBtaW4ocXVlcnkocCtwLGwsbWQsdGwsbWQpLHF1ZXJ5KHArcCsxLG1kKzEscixtZCsxLHRyKSk7Cgl9Cn0Kdm9pZCBtb2RpZnkoaW50IHAsaW50IGwsaW50IHIsaW50IHRsLGludCB0cixsbCB2KSB7CglpZiAodGw+dHIpIHJldHVybjsKCWlmICh0bD09bCYmdHI9PXIpIHJldHVybiBzZXRmKHAsdik7CgllbHNlIHsKCQlwdXNoKHApOwoJCWludCBtZD0obCtyKT4+MTsKCQlpZiAodHI8PW1kKSBtb2RpZnkocCtwLGwsbWQsdGwsdHIsdik7CgkJZWxzZSBpZiAodGw+bWQpIG1vZGlmeShwK3ArMSxtZCsxLHIsdGwsdHIsdik7CgkJZWxzZSBtb2RpZnkocCtwLGwsbWQsdGwsbWQsdiksbW9kaWZ5KHArcCsxLG1kKzEscixtZCsxLHRyLHYpOwoJCXVwZChwKTsKCX0KfQoKdm9pZCBkZnMoaW50IHUsaW50IGYpIHsKCWlkW2xbdV09Kyt0b3RdPXU7IGluZFt0b3RdPW1wKGluZiwwKTsKCWZvciAoYXV0byB2OnZlY1t1XSkgewoJCWluZFsrK3RvdF09bXAodix2KTsKCQlwb3Nbdl09dG90OwoJfQoJdmxbdV09dG90OwoJZGVwW3VdPWRlcFtmXSsxOwoJaWYgKGh2W3VdKSBkZnMoaHZbdV0sdSk7CglyZXAoaiwwLFNaKGVbdV0pKSBpZiAoZVt1XVtqXSE9ZiYmZVt1XVtqXSE9aHZbdV0pCgkJZGZzKGVbdV1bal0sdSk7CglyW3VdPXRvdDsKfQp2b2lkIEhMRG9UKGludCBydCkgewoJaW50IHQ9MTsKCXFbMF09cnQ7CglyZXAoaSwwLG4pIHsKCQlpbnQgdT1xW2ldOwoJCXJlcChqLDAsU1ooZVt1XSkpIGlmIChlW3VdW2pdIT1mW3VdKQoJCQlmW2VbdV1bal1dPXUsZGVwW3FbdCsrXT1lW3VdW2pdXT1kZXBbdV0rMTsKCX0KCXBlcihpLDAsbikgewoJCWludCB1PXFbaV0scD1mW3VdOwoJCXNbdV0rKyxzW3BdKz1zW3VdOwoJCWlmICghbFt1XSkgbFt1XT0xOwoJCWlmIChoc1twXTxzW3VdKSBoc1twXT1zW3VdLGh2W3BdPXUsbFtwXT1sW3VdKzE7Cgl9CglyZXAoaSwwLG4pIHsKCQlpbnQgdT1xW2ldOwoJCWlmICghYmVsW3VdKSBiZWxbdV09dTsKCQlpZiAoaHZbdV0pIGJlbFtodlt1XV09YmVsW3VdOwoJfQoJZGZzKHJ0LDApOwp9CnZvaWQgcXVlcnkoaW50IHUsaW50IHYpIHsKCXdoaWxlICgxKSB7CgkJaWYgKGJlbFt1XT09YmVsW3ZdKSB7CgkJCWlmIChkZXBbdV08ZGVwW3ZdKSBzd2FwKHUsdik7CgkJCXo9bWluKHoscXVlcnkoMSwxLG0sbFt2XSx2bFt1XSkpOwoJCQlicmVhazsKCQl9IGVsc2UgewoJCQlpZiAoZGVwW2JlbFt1XV08ZGVwW2JlbFt2XV0pIHN3YXAodSx2KTsKCQkJej1taW4oeixxdWVyeSgxLDEsbSxsW2JlbFt1XV0sdmxbdV0pKTsKCQkJdT1mW2JlbFt1XV07CgkJfQoJfQp9CgppbnQgbWFpbigpIHsKCXNjYW5mKCIlZCVkJWQiLCZuLCZtLCZRKTsKCXJlcChpLDEsbikgewoJCXNjYW5mKCIlZCVkIiwmdSwmdik7CgkJZVt1XS5wYih2KTsgZVt2XS5wYih1KTsKCX0KCXJlcChpLDAsbSkgewoJCXNjYW5mKCIlZCIsJnUpOwoJCXZlY1t1XS5wYihpKzEpOwoJfQoJSExEb1QoMSk7CgltPXRvdDsKCWJ1aWxkKDEsMSxtKTsKCXJlcChpLDAsUSkgewoJCXNjYW5mKCIlZCIsJnR5KTsKCQlpZiAodHk9PTEpIHsKCQkJc2NhbmYoIiVkJWQlZCIsJnUsJnYsJmspOwoJCQlyZXQuY2xlYXIoKTsKCQkJd2hpbGUgKGs+MCkgewoJCQkJej1tcChpbmYsMCk7CgkJCQlxdWVyeSh1LHYpOwoJCQkJaWYgKHouZmk+PTFsbDw8NTApIGJyZWFrOwoJCQkJLS1rOwoJCQkJcmV0LnBiKHouc2UpOwoJCQkJbW9kaWZ5KDEsMSxtLHBvc1t6LnNlXSxwb3Nbei5zZV0saW5mKTsKCQkJfQoJCQlwcmludGYoIiVkIixTWihyZXQpKTsKCQkJZm9yIChhdXRvIHU6cmV0KSBwcmludGYoIiAlZCIsdSk7CgkJCXB1dHMoIiIpOwoJCX0gZWxzZSB7CgkJCXNjYW5mKCIlZCVkIiwmdSwmayk7CgkJCW1vZGlmeSgxLDEsbSxsW3VdLHJbdV0sayk7CgkJfQoJfQp9