Consider the function Mystery [list] (list is a LISP list, see Section 9.1.2):
$$
\begin{aligned}
& \text { Mystery }\left[1_{-}\right]:=\operatorname{mystery}[1, \text { nil }] \\
& \text { mystery }\left[n i 1, r_{-}\right]:=r \\
& \text { mystery }\left[1_{-}, r_{-}\right]:=\operatorname{mystery}\left[\operatorname{cdr}[1], \operatorname{cons}\left[\operatorname{car}[1], r_1\right]\right]
\end{aligned}
$$
1. Describe what the function Mystery [list $]$ does.
2. How many calls of mystery[] occur in the computation of Mystery[l], if $l$ is a list of length $n$ ?
3. Implement Mystery[] directly with a While loop (i.e., without the auxiliary function mystery []). Use Module to declare local variables.