[step:Find a cycle of length $\ell$ by pigeonhole on $N^-(x_1)$ and $N(x_\ell)$]Define
\begin{align*}
N^-(x_1) := \{x_i \in V(P) : 1 \leq i \leq \ell - 1,\ x_{i+1} \in N(x_1)\}.
\end{align*}
The map $x_i \mapsto x_{i+1}$ is a bijection from $N^-(x_1) \subseteq \{x_1, \ldots, x_{\ell-1}\}$ to $N(x_1) \cap \{x_2, \ldots, x_\ell\} = N(x_1)$ (the latter equality by the endpoint claim). Hence
\begin{align*}
|N^-(x_1)| = |N(x_1)| \geq \frac{n}{2}.
\end{align*}
Similarly $|N(x_\ell)| \geq n/2$, and $N(x_\ell) \subseteq \{x_1, \ldots, x_{\ell-1}\}$.
Both $N^-(x_1)$ and $N(x_\ell)$ are subsets of $\{x_1, \ldots, x_{\ell-1}\}$. But $x_1 \notin N^-(x_1)$ (since $x_0$ does not exist — or more precisely, the defining condition $x_0 \in N(x_1)$ is vacuous as $x_0$ is not a vertex; formally, $N^-(x_1) \subseteq \{x_1, \ldots, x_{\ell-1}\}$ is all we need for the counting). By pigeonhole,
\begin{align*}
|N^-(x_1) \cap N(x_\ell)| \geq |N^-(x_1)| + |N(x_\ell)| - (\ell - 1) \geq \frac{n}{2} + \frac{n}{2} - (\ell - 1) = n - \ell + 1.
\end{align*}
Since $\ell \leq n$ (the path has at most $n$ vertices), we have $n - \ell + 1 \geq 1$, so $N^-(x_1) \cap N(x_\ell) \neq \varnothing$. Pick any $x_i \in N^-(x_1) \cap N(x_\ell)$.
Then $x_{i+1} \in N(x_1)$ and $x_i \in N(x_\ell)$. Construct the cycle
\begin{align*}
C: x_i, x_\ell, x_{\ell-1}, \ldots, x_{i+2}, x_{i+1}, x_1, x_2, \ldots, x_{i-1}, x_i.
\end{align*}
Explicitly: $C$ traverses $x_i \to x_\ell$ (edge), then the path $P$ in reverse from $x_\ell$ to $x_{i+1}$ (edges $x_\ell x_{\ell-1}, \ldots, x_{i+2} x_{i+1}$), then $x_{i+1} \to x_1$ (edge), then the path $P$ forward from $x_1$ to $x_i$ (edges $x_1 x_2, \ldots, x_{i-1} x_i$). The cycle $C$ has exactly $\ell$ vertices (all vertices of $P$) and $\ell$ edges, hence is a cycle of length $\ell$.
[illustration:ore-dirac-cycle-construction][/step]