:-dynamic drvo/3. odrvi([A|L]):-asserta(drvo(nil,A,nil)),odrvid(L),listing(drvo). odrvid([]). odrvid([A|L]):-nadji(A,_),odrvid(L). nadji(A,X):-drvo(Y,X,_),A=X,not(Z=nil),nadji(A,Z). nadji(A,X):-drvo(Y,X,nil),A>=X,retract(drvo(Y,X,nil)), assertz(drvo(Y,X,A)),assertz(drvo(nil,A,nil)). nadji(A,_):-assertz(drvo(nil,A,nil)). brisi:-retract(drvo(_,_,_)),fail. brisi.