\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}