- Indices are needed
- Next three clockwise cups
- Moving three cups clockwise after destination
- Selecting new current cup clockwise after current cup
- Labels are needed
- Destination cup with a label equal to current cup's label minus one
- Not counting cups just picked up
- Label wrapping around
- Next index = current index + 3 in current array
- When overflowing, subarray until destination can be moved, instead of three cups