var tot,i,j,n,g,m,k,l,t,x,aa,bb,tmp,tmp2,s,head,tail:longint; a:array[-2..6000100]of record tt,vv,next:longint; end; b:array[-2..2000100]of boolean; d:array[-2..2000100]of longint; q:array[1..2000100]of longint; function max(x,y:longint):longint; begin if x>y then exit(x); exit(y); end; procedure specialdoit; begin k:=maxlongint; for i:=1 to max(n,m)-1 do begin read(x); if xtail do begin inc(head); if head=2000001 then head:=1; k:=q[head]; x:=k; while x<>0 do begin tmp:=a[x].vv; g:=a[x].tt; if d[k]+tmp