function [R1,R2]=avgtree(dist);
%Builds the average tree

%body
n=size(dist,1);
dist=prim2(dist);
listn=tree2lst(dist);
ln=size(listn,1);
listn(1);
list=[]; %Spisok clasterow
clusters=zeros(1,n);%nomer klastera, w kotorom nahoditsya kazhdij uzel
nclusters=0;
i=1;
list(1).n=0;
while and(list(1).n<n,i<ln)
    node1=listn(i,1);
    node2=listn(i,2);
    if clusters(node2)~=0
        t=node2;
        node2=node1;
        node1=t;
    end
    value=listn(i,3);
    if clusters(node1)~=0
        cl1=clusters(node1);
        if clusters(node2)~=0
            cl2=clusters(node2);
            if cl1==cl2
                i=i+1;
                continue;
            end
            %Clasteri raznije. W perwij cluster dobawlyayem soderzhimoye 2-go
            if cl1>cl2
                t=cl2;
                cl2=cl1;
                cl1=t;
            end
            list(cl1).ch=[list(cl1).ch,list(cl2).ch];
            list(cl1).lnk=[list(cl1).lnk;list(cl2).lnk;list(cl1).max,value,list(cl2).max];
            for j=list(cl1).n:list(cl1).n+list(cl2).n-2
                list(cl1).lnk(j,1)=list(cl1).lnk(j,1)+list(cl1).n;
                list(cl1).lnk(j,4)=list(cl1).lnk(j,4)+list(cl1).n;
            end
            list(cl1).lnk(j+1,4)=list(cl1).lnk(j+1,4)+list(cl1).n;
            list(cl1).n=list(cl1).n+list(cl2).n;
            list(cl2).n=0;
            list(cl2).ch=[];
            list(cl2).lnk=[];
            for j=1:n
                if clusters(j)==cl2
                    clusters(j)=cl1;
                end
            end
        else
            %2-j element - ne cluster. 
            list(cl1).n=list(cl1).n+1;
            list(cl1).ch=[list(cl1).ch,node2];
            list(cl1).lnk=[list(cl1).lnk;list(cl1).max(1),list(cl1).max(2),value,list(cl1).n-1,0];
            list(cl1).max(1)=(list(cl1).max(1)+list(cl1).n)/2;
            list(cl1).max(2)=value;
            clusters(node2)=cl1;
        end
    else
        %Oba elementa - ne clusteri. Dobawlyayem ih w nowij claster.
        nclusters=nclusters+1;
        list(nclusters).n=2;
        list(nclusters).ch=[node1,node2];
        list(nclusters).lnk=[0,0,value,1,0];
        list(nclusters).max=[0.5,value];
        clusters(node1)=nclusters;
        clusters(node2)=nclusters;
    end
    i=i+1;
end
R1=list(1).lnk;
R2=list(1).ch;