private <T> Elements<T> join (Elements<T> min, Elements<T> inserted) {
	        if (min == null && inserted == null) { return null;}
	        else if (min != null && inserted == null) { return min; }
	        else if (min == null && inserted != null) { return inserted; }
	        else { Elements<T> minNext = min.rightkin; min.rightkin = inserted.rightkin;
	            min.rightkin.leftkin = min; inserted.rightkin = minNext;
	            inserted.rightkin.leftkin = inserted;
	            return min.weight < inserted.weight? min : inserted;
	        } }