split algo