mymember(X, [X | _]).
mymember(X, [_ | TailY]) :- mymember(X, TailY).

myselect(X, [X | TailY], TailY).
myselect(X, [H | TailY], [H | TailZ]) :-
  myselect(X, TailY, TailZ).

mynth0(0, [H | _], H).
mynth0(X, [H | TailY], Z) :-
  X1 is X-1, mynth0(X1, TailY, Z).
