Generating Solutions to the n-Queens Problem: Using 2-Circulant Matrices, Maximal Cliques and 0-1 Integer Programming