	tree merge( a, b )
	tree a, b;
	{
	if ( a == NULL ) return( b );
	else if ( b == NULL ) return( a );
	else if ( a->k > b->k ) {
		a->right = merge( a->right, b );
		fixdist( a );
		return( a );
		}
	else	{
		b->right = merge( a, b->right );
		fixdist( b );
		return( b );
		}
	};

	tree delete( pq )
	tree pq;
	{
	if ( pq == NULL ) Error /*** delete on an empty queue ***/;
	else	return( merge( pq->left, pq->right ) );
	};
