The strategy is an iterative orbit-tracing algorithm: pick an element, follow its orbit under $\sigma$ until it returns, record the cycle, then pick an element not yet accounted for and repeat. Finiteness of $\{1, \ldots, n\}$ guarantees the process terminates, and injectivity of $\sigma$ guarantees the resulting cycles are disjoint.
**Step 1: Construct the first cycle.**
Let $X = \{1, 2, \ldots, n\}$. Pick $a_1 \in X$ and consider the [sequence](/page/Sequence) $a_1, \sigma(a_1), \sigma^2(a_1), \ldots$ Since $X$ is finite, there exists a minimal $j \geq 1$ such that $\sigma^j(a_1) \in \{a_1, \sigma(a_1), \ldots, \sigma^{j-1}(a_1)\}$.
[claim:Orbit Returns to Start]
$\sigma^j(a_1) = a_1$.
[/claim]
[proof]
Suppose instead that $\sigma^j(a_1) = \sigma^i(a_1)$ for some $1 \leq i < j$. Since $\sigma$ is a bijection, we can apply $\sigma^{-i}$ to both sides to get $\sigma^{j-i}(a_1) = a_1$. But $0 < j - i < j$, contradicting the minimality of $j$.
[/proof]
So $a_1, \sigma(a_1), \ldots, \sigma^{j-1}(a_1)$ are all distinct and form the cycle $(a_1\; \sigma(a_1)\; \ldots\; \sigma^{j-1}(a_1))$.
**Step 2: Iterate on the remaining elements.**
If there exists $b \in X \setminus \{a_1, \sigma(a_1), \ldots, \sigma^{j-1}(a_1)\}$, apply the same procedure to $b$ to obtain another cycle. This cycle is disjoint from the first: if some element appeared in both, injectivity of $\sigma$ would force $b$ to lie in the first cycle, a contradiction.
**Step 3: Termination and conclusion.**
Since each step accounts for at least one new element and $X$ is finite, the process terminates after finitely many steps. The resulting cycles are pairwise disjoint and their product equals $\sigma$ on all of $X$.