I don’t know exactly how you personally go about moving one part to another, so Ill simply show you how to take any arbitrary number of parts named “Track#” and sort it into a table by the number.
local TrackPoints = workspace.TrackPoints:GetChildren() -- Get all Current Track Points
local function SortByName(a,b)
return tonumber(string.match(a.Name , "%d+")) > tonumber(string.match(b.Name , "%d+"))
end
table.sort(TrackPoints, SortByName)
You can now iterate through TrackPoints (using ipairs or something similar) and guarantee your track points are sorted by the numbers at the end of their names.
You could always use another object that has a part0, part1, so that you always know where the next target is. I use beams, since they are visually represented on screen.