private int printDown( ArrayList<Pair> pairs, Arc a, int hint )
		throws MVDException
	{
		if ( a.numChildren() > 0 )
			numParents++;
		Pair p = a.toPair( parents, orphans );
		pairs.add( p );
		a.to.printArc( a );
		if ( a.to != null )
		{
			Node u = a.to;
			if ( u.allPrintedIncoming() )
			{
				if ( hint != -1 )
					hint = reduceHint( pairs, hint );
				printAcross( pairs, u, a.versions );
				// next node produced, invalidating hint
				hint = -1;
			}
		}
		return hint;
	}