Got the three experimental stuff done

Experiment 1: what we are currently doing: a mix between space and speed

Experiment 2: focus only on speed (use int instead of byte but
everything else approx the same.

Experiment 3: focus on size.  Used ArrayList instead of HashSet because
it is saves more space than other methods.