proceed(0, L, L).
proceed(_, [], []).
proceed(N, [H|T], [NewH|Output]) :-
N > 0,
proceed(NewN, T, Output).
:- proceed
(3,[10,9,8,7,6,5,4,3,2,1],X
), write(X
), nl, proceed
(30,[10,9,8,7,6,5,4,3,2,1],Y
), write(Y
).
cHJvY2VlZCgwLCBMLCBMKS4KcHJvY2VlZChfLCBbXSwgW10pLgpwcm9jZWVkKE4sIFtIfFRdLCBbTmV3SHxPdXRwdXRdKSA6LQogICAgTiA+IDAsCiAgICBOZXdOIGlzIE4gLSAxLAogICAgTmV3SCBpcyBIIC0gMSwKICAgIHByb2NlZWQoTmV3TiwgVCwgT3V0cHV0KS4KICAgIAo6LSBwcm9jZWVkKDMsWzEwLDksOCw3LDYsNSw0LDMsMiwxXSxYKSwgd3JpdGUoWCksIG5sLAogICBwcm9jZWVkKDMwLFsxMCw5LDgsNyw2LDUsNCwzLDIsMV0sWSksIHdyaXRlKFkpLg==