Interval list intersections
Two pointers, one per list. If the two current ranges overlap, their common part (the larger start, the smaller end) is an answer. Then the range that ends first moves on: nothing later in the other list can reach back to it.
firstList is the top lane, secondList the middle one, and the common parts drop into the bottom lane.