% a)
inverte_tudo([],[]).
inverte_tudo([[X|R]|L],I) :-
inverte_tudo([X|R],XRI),
inverte_tudo(L,LI),
concatena(LI,[XRI],I).
inverte_tudo([X|L],I) :-
inverte_tudo(L,LI),
concatena(LI,[X],I).
% d)
merge([],L,L).
merge(L,[],L).
merge([X1|R1],[X2|R2],[X1|R]) :-
antes(X1,X2),
merge(R1,[X2|R2],R).
merge(L,[X2|R2],[X2|R]) :-
merge(L,R2,R).