\begin{algorithm}
\caption{Insert an Element into a Young Matrix}
\begin{algorithmic}
\PROCEDURE{YoungInsert}{$Y, key$}
\STATE $m = Y.\text{row-num}$
\STATE $n = Y.\text{col-num}$
\IF{$Y[m, n] < \infty$}
\STATE \textbf{error} "young matrix overflow"
\ENDIF
\STATE \CALL{YoungDecreaseKey}{$Y, m, n, key$}
\ENDPROCEDURE
\STATE
\STATE \COMMENT{decrease $Y[i, j]$ down to $key$}
\PROCEDURE{YoungDecreaseKey}{$Y, i, j, key$}
\IF{$key > Y[i, j]$}
\STATE \textbf{error} "new key is larger than the current key"
\ENDIF
\STATE $Y[i, j] = key$
\WHILE{($i > 1$ \AND $Y[i - 1, j] > Y[i, j]$) \OR ($j > 1$ \AND $Y[i, j - 1] > Y[i, j]$)}
\IF{$Y[i - 1, j] > Y[i, j - 1]$}
\STATE exchange $Y[i, j]$ with $Y[i - 1, j]$
\STATE $i = i - 1$
\ELSE
\STATE exchange $Y[i, j]$ with $Y[i, j - 1]$
\STATE $j = j - 1$
\ENDIF
\ENDWHILE
\ENDPROCEDURE
\end{algorithmic}
\end{algorithm}