program apm;
type vect=array[0..260] of integer;
type elem=record
x,y:integer;
end;
var kk,n,h,i,j,k,x,y,c,m:longint;
start,cd,viz:vect;
t:array[0..1,1..600] of integer;
vv:array[1..33000] of elem;
v:array[1..10000] of integer;
dist,a:array[1..256,1..256] of integer;
bufin,bufout:array[1..66000] of byte;
ok:boolean;
function pivot1(st,dr:integer):integer;
var i,j,di,dj,au:integer;
aux:elem;
begin
i:=st; j:=dr; di:=0; dj:=1;
while i<j do
begin
if dist[vv[i].x,vv[i].y]>dist[vv[j].x,vv[j].y] then
begin
aux:=vv[i];
vv[i]:=vv[j];
vv[j]:=aux;
au:=di;
di:=dj;
dj:=au;
end;
i:=i+di;
j:=j-dj;
end;
pivot1:=i;
end;
procedure sort1(st,dr:integer);
var p:integer;
begin
if st<dr then
begin
p:=pivot1(st,dr);
sort1(st,p-1);
sort1(p+1,dr);
end;
end;
function pivot(st,dr:integer):integer;
var i,j,di,dj,aux:integer;
begin
i:=st; j:=dr; di:=0; dj:=1;
while i<j do
begin
if v[i]>v[j] then
begin
aux:=v[i];
v[i]:=v[j];
v[j]:=aux;
aux:=di;
di:=dj;
dj:=aux;
end;
i:=i+di;
j:=j-dj;
end;
pivot:=i;
end;
procedure sort(st,dr:integer);
var p:integer;
begin
if st<dr then
begin
p:=pivot(st,dr);
sort(st,p-1);
sort(p+1,dr);
end;
end;
procedure bfs(nod:integer);
var p,st,sf,i,z:longint;
begin
for i:=1 to n do
viz[i]:=0;
st:=0; sf:=1;
cd[1]:=nod;
while st<sf do
begin
st:=st+1;
p:=start[cd[st]];
z:=cd[st];
while p<>0 do
begin
if viz[t[0,p]]=0 then
begin
viz[t[0,p]]:=1;
inc(sf);
cd[sf]:=t[0,p];
if a[z,t[0,p]]>dist[nod,z] then dist[nod,t[0,p]]:=a[z,t[0,p]]
else dist[nod,t[0,p]]:=dist[nod,z];
end;
p:=t[1,p];
end;
end;
end;
begin
assign(input,'apm.in'); reset(input);
assign(output,'apm.out'); rewrite(output);
settextbuf(input,bufin);
settextbuf(output,bufout);
readln(n);
kk:=0;
for i:=1 to n-1 do
begin
readln(x,y,c);
inc(kk);
a[x,y]:=c; a[y,x]:=c;
t[0,kk]:=y;
t[1,kk]:=start[x];
start[x]:=kk;
inc(kk);
t[0,kk]:=x;
t[1,kk]:=start[y];
start[y]:=kk;
end;
for i:=1 to n do
bfs(i);
k:=0;
while not seekeof (input) do
begin
readln(c);
inc(k);
v[k]:=c;
end;
sort(1,k);
m:=0;
for i:=1 to n do
for j:=i+1 to n do
begin
if a[i,j]=0 then
begin
inc(m);
vv[m].x:=i; vv[m].y:=j;
end;
end;
sort1(1,m);
h:=1;
ok:=false;
for i:=1 to k do
begin
for j:=h to m do
begin
if dist[vv[j].x,vv[j].y]<=v[i] then
begin
writeln(vv[j].x,' ',vv[j].y,' ',v[i]);
h:=j+1;
ok:=true;
break;
end
else break;
end;
end;
if ok=false then writeln(0);
close(input); close(output);
end.