input([3,2,4,1]).
solution(S,Max) :-	input(L), sort(L,L1), belongs(S,L,Max), turnSequence(S,L,L1).

belongs([],_,Max) :- 0=<Max.
belongs([A|B],L,Max) :- length([A|B],N), N=<Max, Max1 is Max-1, member(A,L),belongs(B,L,Max1).

turnOnce(N, In, Out) :- append(A, [N|B], In), reverse(A,ReversedA), append([N|ReversedA],B,Out).

turnSequence([],L,L).
turnSequence([N|L], In, Out) :- turnOnce(N,In,Out1), turnSequence(L,Out1,Out).
