# The Dutch Flag Problem

Your work is to sort all the colors of the Dutch flag, and the only provided primitive is to exchange two given lines. In addition, you should not create any additional variables (but a few indices).

If you think carefully, this can be done in linear time, where you sort a line at each iteration of the loop. You may want to check again the insertion sort, of which the Dutch Flag sort is a variation. The main difference is that you have 3 insertion points, not only one...

Do a traversal over your data, saving 3 indices:

- `afterBlue` is initialized to 0. Make sure that every cell below `afterBlue` is filled with blue elements.
- `whiteRed` is initialized to size-1. Make sure that every cell after `whiteRed` is filled with red elements.
- `beforeWhite` is initialized to size-1. Make sure that every cell after `beforeWhite` and before `whiteRed` is filled with white elements.

Note that the unsorted cells are always between `afterBlue` and `beforeWhite`.
At each step of your traversal, check the color of the cell at `afterBlue` and do the required exchanges. The loop ending condition is when `afterBlue` becomes larger than `beforeWhite`.