#include <iostream>
#include <cstdlib>

using namespace std;

int a[8];
bool fila[8];
bool d1[15];
bool d2[15];
int  c= 0;

void Poner(int i, int j)
{
    fila[i]= true;
    d1[i+j]= true;
    d2[i-j+7]= true;
    a[i]= j;
}


void Quitar(int i, int j)
{
    fila[i]= false;
    d1[i+j]= false;
    d2[i-j+7]= false;
}

bool ataque(int i, int j)
{
   return fila[i] || d1[i+j] || d2[i-j+7];
}

void Reina(int k)
{
   if (k==8)
     {
      cout << ++c << ": ";
      for (int i=0; i<8; i++)
        cout << " " << a[i];
      cout << endl;
     }
   else
     for (int r=0; r<8; r++)
        if (!ataque(r,k))
           {
            Poner(r,k);
            Reina(k+1);
            Quitar(r,k);
           }
}

int main(void)
{
    for (int k=0; k<8; k++)
       a[k]= 0;
    for (int k=0; k<8; k++)
       fila[k]= false;
    for (int k=0; k<15; k++)
       d2[k]= d1[k]= false;
    Reina(0);
    return EXIT_SUCCESS;
}
