Separate different part of curves after using Curve.Project

Hi, I am wondering that is there any algorithm can deal with my problem

My problem is that how can I separate a bunch of curves of nurbs to top part and bottom part. Meanwhile, I want to keep their nurbs property

so far, I only can remove the vertical part of curves by measure their X and Y, as shown below, remain top and bottom curves in a list.,.

Also, I tried this two components
image
But ByJoinCurves can not automatically join the curves with continuity respectively
image

Any suggestion is appreciated, Thanks in advance.

@hctungBHP7B try the infamous Group Curves node by archilab package