// Распоређивање n дама на шаховској табли
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
int n, permutacija[15];
bool dame_se_napadaju(int i)
{
for (int index = 0; index < i; index++)
{
if (abs(index - i) == abs(permutacija[index] - permutacija[i]))
return true;
if (permutacija[index] == permutacija[i])
return true;
}
return false;
}
void n_dama(int i)
{
// sve dame su postavljene
if (i == n)
{
for (int index = 0; index < n; index++)
cout << permutacija[index] << " ";
cout << '\n';
}
else
{
for (int index = 0; index < n; index++)
{
permutacija[i] = index + 1;
if (!dame_se_napadaju(i))
n_dama(i + 1);
}
}
}
int main()
{
ios_base::sync_with_stdio(false);
cin >> n;
n_dama(0);
return 0;
}
Ly8g0KDQsNGB0L/QvtGA0LXRktC40LLQsNGa0LUgbiDQtNCw0LzQsCDQvdCwINGI0LDRhdC+0LLRgdC60L7RmCDRgtCw0LHQu9C4CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPGNtYXRoPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBuLCBwZXJtdXRhY2lqYVsxNV07Cgpib29sIGRhbWVfc2VfbmFwYWRhanUoaW50IGkpCnsKICAgIGZvciAoaW50IGluZGV4ID0gMDsgaW5kZXggPCBpOyBpbmRleCsrKQogICAgewogICAgICAgIGlmIChhYnMoaW5kZXggLSBpKSA9PSBhYnMocGVybXV0YWNpamFbaW5kZXhdIC0gcGVybXV0YWNpamFbaV0pKQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICBpZiAocGVybXV0YWNpamFbaW5kZXhdID09IHBlcm11dGFjaWphW2ldKQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICAgIHJldHVybiBmYWxzZTsKfQoKdm9pZCBuX2RhbWEoaW50IGkpCnsKICAgIC8vIHN2ZSBkYW1lIHN1IHBvc3RhdmxqZW5lCiAgICBpZiAoaSA9PSBuKQogICAgewogICAgICAgIGZvciAoaW50IGluZGV4ID0gMDsgaW5kZXggPCBuOyBpbmRleCsrKQogICAgICAgICAgICBjb3V0IDw8IHBlcm11dGFjaWphW2luZGV4XSA8PCAiICI7CiAgICAgICAgY291dCA8PCAnXG4nOwogICAgfQogICAgZWxzZQogICAgewogICAgICAgIGZvciAoaW50IGluZGV4ID0gMDsgaW5kZXggPCBuOyBpbmRleCsrKQogICAgICAgIHsKICAgICAgICAgICAgcGVybXV0YWNpamFbaV0gPSBpbmRleCArIDE7CiAgICAgICAgICAgIGlmICghZGFtZV9zZV9uYXBhZGFqdShpKSkKICAgICAgICAgICAgICAgIG5fZGFtYShpICsgMSk7CiAgICAgICAgfQogICAgfQp9CgppbnQgbWFpbigpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luID4+IG47CiAgICBuX2RhbWEoMCk7CiAgICByZXR1cm4gMDsKfQ==