https://www.cs.duke.edu/csed/curious/compression/lzw.html