qsort([],[]):-!.
qsort([G|R],L):-
      rastavi(R,G,L1,L2),
      qsort(L1,S1),
      qsort(L2,S2),
      spoji(S1,[G],R1),
      spoji(R1,S2,L).

rastavi([],_,[],[]):-!.
rastavi([G|R],X,[G|R1],R2):-G=<X,rastavi(R,X,R1,R2),!.
rastavi([G|R],X,R1,[G|R2]):-rastavi(R,X,R1,R2).

spoji([],L,L).
spoji([G|R],L,[G|R1]):-spoji(R,L,R1).


cifre(1).
cifre(2).
cifre(3).
cifre(4).
cifre(5).
cifre(6).
cifre(7).
cifre(8).
cifre(9).


tablica(A1,A2,A3,A4,A5,A6,A7,A8,A9,B1,B2,B3,B4,N) :- cifre(A1),cifre(A2),cifre(A3),cifre(A4),cifre(A5),cifre(A6),cifre(A7),cifre(A8),cifre(A9),
													razliciti([A1,A2,A3,A4,A5,A6,A7,A8,A9]),
											B1 is A1+A2+A4+A5,B2 is A2+A3+A5+A6,B3 is A4+A5+A7+A8,B4 is A5+A6+A8+A9,qsort([B1,B2,B3,B4],L),
											izdvoj(L,N).
											
program:-tablica(A1,A2,A3,A4,A5,A6,A7,A8,A9,B1,B2,B3,B4,N),ispisi(A1,A2,A3,A4,A5,A6,A7,A8,A9,B1,B2,B3,B4).

izdvoj([X,Y,Z,P],Y):-!.

van(X,[]).
van(X,[Y|R]):-X\=Y,van(X,R).

razliciti([]).
razliciti([X|R]):-van(X,R),razliciti(R).

ispisi(A1,A2,A3,A4,A5,A6,A7,A8,A9,B1,B2,B3,B4):-write(A1),tab(2), write(A2),tab(2), write(A3),nl,
																tab(2), write(B1),tab(2), write(B2),tab(2),nl,
																write(A4),tab(2), write(A5),tab(2),write(A6),nl,
																tab(2),write(B3),tab(2),write(B4),tab(2),nl,
																write(A7),tab(2), write(A8),tab(2), write(A9). 