Added Hashing. NOTE: still small bugs within it. Need to do a more compreshensive bug test for corner cases. It performs well for now. 327 seconds compared to 1429.22 seconds as expected.

Feel free to start profiling this code while I try to figure out what's wrong with the corner cases.