/*
 * Nyolc királynő probléma megoldással backtrack algoritmussal
 * Buta tábla, okos királynő
 *
 * Ebben a példában az algoritmus fontosabb, mint OO jelleg.
 */

#include <iostream>

using std::cout;
using std::endl;

class Kiralyno {
    int sor;
    int oszlop;
    Kiralyno *szomszed;
public:
    Kiralyno(int o, Kiralyno *sz): sor(1), oszlop(o), szomszed(sz) { }
    bool Utesben(int s, int o);
    bool Lep();
    bool Helyezkedj();
    void Kiir();
};

bool Kiralyno::Utesben(int s, int o) {
    int d = oszlop - o;
    if (sor == s || sor + d == s || sor - d == s)
        return true;
    else if (szomszed != NULL)
        return szomszed->Utesben(s, o);
    else
        return false;
}

bool Kiralyno::Lep() {
    if (sor < 8) {
        sor++;
        return true;
    }
    if (szomszed != NULL)  {
        if (!szomszed->Lep())
            return false;
        if (!szomszed->Helyezkedj())
            return false;
    } else {
        return false;
    }
    sor = 1;
    return true;
}

bool Kiralyno::Helyezkedj() {
    while (szomszed != NULL && szomszed->Utesben(sor, oszlop))
        if (!Lep())
            return false;
    return true;
}

void Kiralyno::Kiir() {
    if (szomszed != NULL)
        szomszed->Kiir();
    cout << (char)(oszlop-1+'A') << 9-sor << endl;
}

int main()
{
    Kiralyno *babu = NULL;
    for (int i = 1; i <= 8; i++) {
        babu = new Kiralyno(i, babu);
        babu->Helyezkedj();
    }
    babu->Kiir();
}