Decomposition of an orthogonal matrix I have encountered the following problem:

Prove, if the determinant of an order $n$ orthogonal matrix $O$ is $1$, then $O$ can be expressed as a product of finitely many matrices in the form of
$O_{jk} = I_{(n)} + (\cos\theta - 1)(E_{jj} + E_{kk}) + \sin\theta(E_{jk} - E_{kj})$, where $E_{st}$ is an order $n$ square matrix whose $(s, t)$ entry is $1$ and all other
entries are $0$, and $1 \leq j < k \leq n$. If the determinant of an order $n$ orthogonal matrix is $-1$, then matrices $\mathrm{diag}(\underbrace{1, 1, \ldots, 1}_{n - 1 \text{ terms}}, -1)$
should be appended.

My attempt is trying to approach this problem by using the canonical form of $O$: suppose $e^{i\theta_1}, e^{-i\theta_1}, \ldots, e^{i\theta_s}, e^{-i\theta_s}, \underbrace{-1, \ldots, -1}_{2t}, \underbrace{1, \ldots, 1}_{n - 2s - 2t}$ are $A$'s all eigenvalues, then there exists an orthogonal matrix $O_1$ such that
\begin{align*}
O = O_1\mathrm{diag}\left(\begin{pmatrix}\cos\theta_1 & \sin\theta_1 \\ -\sin\theta_1 & \cos\theta_1\end{pmatrix}, \cdots, \begin{pmatrix}\cos\theta_s & \sin\theta_s \\ -\sin\theta_s & \cos\theta_s\end{pmatrix}, -1, \cdots, -1, 1, \cdots, 1\right)O_1'.
\end{align*}
From here, at best, I am able to show the decomposition under the orthogonal similar relation (although the $\cos\theta$ and $\sin\theta$ are next to each other).
How to show the EXACT decomposition as stated in the problem (i.e., without the presence of $O_1$)?
 A: The matrices $O_{jk}$ are so-called Givens rotations. The goal is to show that you can transform the matrix $O$ into a upper triangular matrix with non-negative diagonal elements by multiplying (from the left) with suitable Givens rotation matrices. Those multiplications preserve orthogonality and determinant, from which we can conclude that the resulting upper triangular matrix is actually the identity. This shows that $O$ can be transformed into the identity by applying a series of Givens rotations, which in turn means that $O$ itself is the product of Givens rotation matrices (namely the inverse Givens rotations in opposite order).
The series of Givens rotations can be obtained as follows (the current values of the elements of the transformed matrix are denoted as $a_{jk}$):
For each $k,\;1\leq k <n,$ perform the following:
As long as there is a row $j>k$ with $a_{jk}\neq 0,$ find $\theta$ and $r\geq 0$ such that $r\cos\theta = a_{kk}$ and $r\sin\theta = a_{jk}.$ Multiply your matrix (from the left) with $O_{jk}$ using this $\theta.$ Afterwards, we will have $a_{kk}=r$ and $a_{jk} = 0$
This multiplication can change values only in the $j$th and $k$th column and in the $j$th and $k$th rows. All elements in the $j$th and $k$th rows on the left of the $k$th column have been made $0$ before. Therefore they keep their value $0$.
In the $k$th column, the rotation only changes $a_{kk}$ and $a_{jk}$, the latter of which is now also $0$.
After finishing this process, we have created an upper triangular matrix with non-negative diagonal elements, which is orthogonal and has determinant $1$, that is, the identity. Now "unroll" the rotations to obtain your original matrix $O$.
