shuffle(L, [], L). shuffle(L, [R1|Rrest], S) :- conc(L1, Lrest, L), shuffle(Lrest, Rrest, Srest), conc(L1, [R1|Srest], S).