\begin{algorithm}
\caption{D-ary Extract Maximum Element}
\begin{algorithmic}
\PROCEDURE{D-HeapExtractMax}{$A$}
\IF{$A.\text{heap-size} < 1$}
\STATE \textbf{error} "heap underflow"
\ENDIF
\STATE $max = A[1]$
\STATE $A[1] = A[A.\text{heap-size}]$
\STATE $A.\text{heap-size} = A.\text{heap-size} - 1$
\STATE \CALL{D-MaxHeapify}{$A, 1$}
\RETURN $max$
\ENDPROCEDURE
\STATE
\PROCEDURE{D-MaxHeapify}{$A, i$}
\STATE $largest = i$
\FOR{$k = 1$ \TO $d$}
\STATE $child_k =$ \CALL{D-Child}{$i, k$}
\IF{$child_k \le A.\text{heap-size}$ \AND $A[child_k] > A[largest]$}
\STATE $largest = child_k$
\ENDIF
\ENDFOR
\IF{$i \ne largest$}
\STATE exchange $A[i]$ with $A[largest]$
\STATE \CALL{D-MaxHeapify}{$A, largest$}
\ENDIF
\ENDPROCEDURE
\end{algorithmic}
\end{algorithm}