import java.io.*;

class AchtDamen
{
    int n; // n Damen auf einem nxn Schachbrett
    int[] lösung;
    long z; // Zähler;

    class LösungGefunden extends Exception {}

    void positioniere(int k) throws LösungGefunden
        // Die ersten k Damen sind bereits positioniert.
    {
	if (k==n)
	    throw new LösungGefunden(); // falls nur eine Lösung gesucht ist
	    // druckeLösung(); // falls alle Lösungen gesucht sind
	for (int p=1; p<=n; p++)
	    if (!konflikt(k,p))
		{
		    lösung[k] = p; z++;
		    positioniere(k+1);
		}
    }

    boolean konflikt(int k, int pos)
	// teste "lösung[k]=pos"
    {
	for (int i=0; i<k; i++) {
	   if ((lösung[i]==pos) || (lösung[i]-i==pos-k) || (lösung[i]+i==pos+k))
		   return true;
	}
	return false;
    }

    AchtDamen(int AnzahlDamen)
    {
	n = AnzahlDamen;
	lösung = new int[n];
	z = 0;
	try {
	    positioniere(0);
	    System.out.println("Keine Lösung");
	}
	catch(LösungGefunden e) {
	    druckeLösung();
	}
	System.out.println(z+" Damen wurden versuchsweise platziert.");
    }

    void druckeLösung()
    {
	for (int i=0; i<n; i++) 
	    System.out.print("["+(i+1)+","+lösung[i]+"], ");
	System.out.println();
    }

    public static void main(String [] args)
    {
	if (args.length==0)
	    new AchtDamen(8);
	else
	    new AchtDamen(Integer.parseInt(args[0]));
    }

}
				 
