| root | 0 | [] | 0 | take 10 at 0, then restore [] and skip |
| take index 0 | 1 | [10] | 10 | overshoot; return |
| skip index 0 | 1 | [] | 0 | take 1 at 1, then restore [] and skip |
| take index 1 | 2 | [1] | 1 | take 2 at 2, then restore [1] and skip |
| take index 2 | 3 | [1,2] | 3 | take 7 at 3, then restore [1,2] and skip |
| take index 3 | 4 | [1,2,7] | 10 | overshoot; return |
| skip index 3 | 4 | [1,2] | 3 | take 6 at 4, then restore [1,2] and skip |
| take index 4 | 5 | [1,2,6] | 9 | overshoot; return |
| skip index 4 | 5 | [1,2] | 3 | take 1 at 5, then restore [1,2] and skip |
| take index 5 | 6 | [1,2,1] | 4 | take 5 at 6, then restore [1,2,1] and skip |
| take index 6 | 7 | [1,2,1,5] | 9 | overshoot; return |
| skip index 6 | 7 | [1,2,1] | 4 | exhausted; return |
| skip index 5 | 6 | [1,2] | 3 | take 5 at 6, then restore [1,2] and skip |
| take index 6 | 7 | [1,2,5] | 8 | record [1,2,5]; return |
| skip index 6 | 7 | [1,2] | 3 | exhausted; return |
| skip index 2 | 3 | [1] | 1 | take 7 at 3, then restore [1] and skip |
| take index 3 | 4 | [1,7] | 8 | record [1,7]; return |
| skip index 3 | 4 | [1] | 1 | take 6 at 4, then restore [1] and skip |
| take index 4 | 5 | [1,6] | 7 | take 1 at 5, then restore [1,6] and skip |
| take index 5 | 6 | [1,6,1] | 8 | record [1,1,6]; return |
| skip index 5 | 6 | [1,6] | 7 | take 5 at 6, then restore [1,6] and skip |
| take index 6 | 7 | [1,6,5] | 12 | overshoot; return |
| skip index 6 | 7 | [1,6] | 7 | exhausted; return |
| skip index 4 | 5 | [1] | 1 | take 1 at 5, then restore [1] and skip |
| take index 5 | 6 | [1,1] | 2 | take 5 at 6, then restore [1,1] and skip |
| take index 6 | 7 | [1,1,5] | 7 | exhausted; return |
| skip index 6 | 7 | [1,1] | 2 | exhausted; return |
| skip index 5 | 6 | [1] | 1 | take 5 at 6, then restore [1] and skip |
| take index 6 | 7 | [1,5] | 6 | exhausted; return |
| skip index 6 | 7 | [1] | 1 | exhausted; return |
| skip index 1 | 2 | [] | 0 | take 2 at 2, then restore [] and skip |
| take index 2 | 3 | [2] | 2 | take 7 at 3, then restore [2] and skip |
| take index 3 | 4 | [2,7] | 9 | overshoot; return |
| skip index 3 | 4 | [2] | 2 | take 6 at 4, then restore [2] and skip |
| take index 4 | 5 | [2,6] | 8 | record [2,6]; return |
| skip index 4 | 5 | [2] | 2 | take 1 at 5, then restore [2] and skip |
| take index 5 | 6 | [2,1] | 3 | take 5 at 6, then restore [2,1] and skip |
| take index 6 | 7 | [2,1,5] | 8 | duplicate key; return |
| skip index 6 | 7 | [2,1] | 3 | exhausted; return |
| skip index 5 | 6 | [2] | 2 | take 5 at 6, then restore [2] and skip |
| take index 6 | 7 | [2,5] | 7 | exhausted; return |
| skip index 6 | 7 | [2] | 2 | exhausted; return |
| skip index 2 | 3 | [] | 0 | take 7 at 3, then restore [] and skip |
| take index 3 | 4 | [7] | 7 | take 6 at 4, then restore [7] and skip |
| take index 4 | 5 | [7,6] | 13 | overshoot; return |
| skip index 4 | 5 | [7] | 7 | take 1 at 5, then restore [7] and skip |
| take index 5 | 6 | [7,1] | 8 | duplicate key; return |
| skip index 5 | 6 | [7] | 7 | take 5 at 6, then restore [7] and skip |
| take index 6 | 7 | [7,5] | 12 | overshoot; return |
| skip index 6 | 7 | [7] | 7 | exhausted; return |
| skip index 3 | 4 | [] | 0 | take 6 at 4, then restore [] and skip |
| take index 4 | 5 | [6] | 6 | take 1 at 5, then restore [6] and skip |
| take index 5 | 6 | [6,1] | 7 | take 5 at 6, then restore [6,1] and skip |
| take index 6 | 7 | [6,1,5] | 12 | overshoot; return |
| skip index 6 | 7 | [6,1] | 7 | exhausted; return |
| skip index 5 | 6 | [6] | 6 | take 5 at 6, then restore [6] and skip |
| take index 6 | 7 | [6,5] | 11 | overshoot; return |
| skip index 6 | 7 | [6] | 6 | exhausted; return |
| skip index 4 | 5 | [] | 0 | take 1 at 5, then restore [] and skip |
| take index 5 | 6 | [1] | 1 | take 5 at 6, then restore [1] and skip |
| take index 6 | 7 | [1,5] | 6 | exhausted; return |
| skip index 6 | 7 | [1] | 1 | exhausted; return |
| skip index 5 | 6 | [] | 0 | take 5 at 6, then restore [] and skip |
| take index 6 | 7 | [5] | 5 | exhausted; return |
| skip index 6 | 7 | [] | 0 | exhausted; return |
| root complete | 0 | [] | 0 | return [[1,1,6],[1,2,5],[1,7],[2,6]] in any order |