\begin{algorithm}
\caption{Extract Minimum Element of a Young Matrix}
\begin{algorithmic}
\PROCEDURE{YoungExtractMin}{$Y$}
\IF{$Y.\text{row-num} < 1$ \OR $Y.\text{col-num} < 1$}
\STATE \textbf{error} "young matrix underflow"
\ENDIF
\STATE $min = Y[0, 0]$
\STATE $Y[0, 0] = \infty$
\STATE \CALL{MatrixYounify}{$Y, 0, 0$}
\RETURN $min$
\ENDPROCEDURE
\STATE
\STATE \COMMENT{Younify $Y[i..m, j..n]$ when $Y[i + 1..m, j..n]$ and $Y[i..m, j+1..n]$ is young}
\PROCEDURE{MatrixYounify}{$Y, i, j$}
\STATE $smallest = (i, j)$
\IF{$i + 1 < Y.\text{row-num}$ \AND $Y[i + 1, j] < Y[smallest]$}
\STATE $smallest = (i + 1, j)$
\ENDIF
\IF{$j + 1 < Y.\text{col-num}$ \AND $Y[i, j + 1] < Y[smallest]$}
\STATE $smallest = (i, j + 1)$
\ENDIF
\IF{$smallest \ne (i, j)$}
\STATE exchange $Y[i, j]$ with $Y[smallest]$
\STATE \CALL{MatrixYounify}{$Y, smallest$}
\ENDIF
\ENDPROCEDURE
\end{algorithmic}
\end{algorithm}