Written in Java.  Uses Recursive Backtracking Algorithm