smallestSpread2 ((x0 : x1 : x2 : []) : (y0 : y1 : y2 : []) : ys) =
  if compareSpread (readInt x1) (readInt x2) (readInt y1) (readInt y2)
    then smallestSpread ((x0 : x1 : x2 : []) : ys)
    else smallestSpread ((y0 : y1 : y2 : []) : ys)
smallestSpread2 [x] = head x