The contradiction in this technique is that a number is shown to be both true and false, based on the assumption that another number elsewhere
is false, or in the second approach is true.
With the starting number set to false, as many chains as possible are generated with any number false at the chain's last node.
These chains are stored in an array. Then with the same starting number false, as many chains as possible are generated with any number true
at the chain's last node, and these chains are stored in a different array. The two arrays are then compared to see if the same final number
at the same cell is present in both arrays. If so, the assumption that the starting number was false is incorrect, and the starting number
must be true.
The second technique is to generate two sets of chains as above, one with the final number false and the other with it true, but this time
with the starting number set to true. Now if the same number at the same address appears in both sets, then the assumption that the starting
number was true is incorrect, and it can therefore be eliminated.