voddan
val (As, Bs) = list.mapIndexed { i, it -> Pair(it, i) }.partition { condition(it) } val Cs = As. map {..}.filter{..}.sortBy{..} return (As + Cs).sortedBy {it.second}.map {it.first}