algorithm to reveal intermediate seeds
for(d=D; ; d--) { // working from leaves...
// move up tree 1 level ea loop
if (min == max) { // min & max have converged...
reveal(d,min); // ...so reveal sub-tree root..
if odd(min) { // odd min never left child...
reveal(d,min); // ...so reveal odd min seed
min++; // and step min in 1 to right
if !odd(max) { // even max never right child..
reveal(d,max); // ...so reveal even max seed
max--; // and step max in 1 to left
if (min > max) break; // min & max cousins, so quit
max/=2; // ... & halve max ready for...
} // ... next level round loop