public static LinkedListNode add (LinkedListNode n1, LinkedListNode n2) {
		// number are stored in regular order
		int		length_n1 = n1.length();
		int		length_n2 = n2.length();

		LinkedListNode	l = null;
		LinkedListNode  s = null;

		int		dif  =  Math.abs( length_n1 - length_n2 );
		if ( length_n1 > length_n2 ){
			l  =  n1;	s = n2;			
		} else {
			l  =  n2;   s = n1;
		}
				
		for (int i=0; i != dif ; ++i ) {
			s = s.addToHead(0);
		}
		
		Stack<Integer>		ret = new Stack<>(); // this is a dummy head
		addHelper(l, s, ret);
		
		LinkedListNode	ret2  =  new LinkedListNode(ret.pop());
		while ( !ret.isEmpty() ) {
			ret2.appendToTail( ret.pop() );
		}
		return ret2;	
	}