#include <iostream>
#include <cmath>
#include <algorithm>
#include <vector>
#include <iomanip>
using namespace std;
bool fail1=0, fail2=0;
bool lsw0(int a, int b) {
// В исходном массиве нет нулей,
// компаратор не может запуститься от нулевого аргумента
if (a==0 || b==0) if (!fail1) {fail1 = 1; cout << "Fail #1" << endl;}
// Арктангенс от положительного числа и нуля согласно стандарту
// равен pi/2 независимо от первого аргумента
if (atan2(a,0) < atan2(b,0)) if (!fail2) {fail2 = 1; cout << "Fail #2" << endl;}
// Это отношение транзитивно, если арктангенс зависит только от входных данных
return atan2(a,0) < atan2(b,0);
}
int main () {
cout << lsw0(1,32) << ' ' << lsw0(32,1) << endl;
#ifdef __MINGW32__
cout << "I'm running on MinGW 32" << endl;
#endif
vector<int> perm;
for (int j=1;j<250;j++) {
perm.push_back(j);
}
sort(perm.begin(),perm.end(),lsw0);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+CiNpbmNsdWRlIDxhbGdvcml0aG0+CiNpbmNsdWRlIDx2ZWN0b3I+CiNpbmNsdWRlIDxpb21hbmlwPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKYm9vbCBmYWlsMT0wLCBmYWlsMj0wOwoKYm9vbCBsc3cwKGludCBhLCBpbnQgYikgewogIC8vINCSINC40YHRhdC+0LTQvdC+0Lwg0LzQsNGB0YHQuNCy0LUg0L3QtdGCINC90YPQu9C10LksIAogIC8vINC60L7QvNC/0LDRgNCw0YLQvtGAINC90LUg0LzQvtC20LXRgiDQt9Cw0L/Rg9GB0YLQuNGC0YzRgdGPINC+0YIg0L3Rg9C70LXQstC+0LPQviDQsNGA0LPRg9C80LXQvdGC0LAKICBpZiAoYT09MCB8fCBiPT0wKSBpZiAoIWZhaWwxKSB7ZmFpbDEgPSAxOyBjb3V0IDw8ICJGYWlsICMxIiA8PCBlbmRsO30KICAvLyDQkNGA0LrRgtCw0L3Qs9C10L3RgSDQvtGCINC/0L7Qu9C+0LbQuNGC0LXQu9GM0L3QvtCz0L4g0YfQuNGB0LvQsCDQuCDQvdGD0LvRjyDRgdC+0LPQu9Cw0YHQvdC+INGB0YLQsNC90LTQsNGA0YLRgwogIC8vINGA0LDQstC10L0gcGkvMiDQvdC10LfQsNCy0LjRgdC40LzQviDQvtGCINC/0LXRgNCy0L7Qs9C+INCw0YDQs9GD0LzQtdC90YLQsAogIGlmIChhdGFuMihhLDApIDwgYXRhbjIoYiwwKSkgaWYgKCFmYWlsMikge2ZhaWwyID0gMTsgY291dCA8PCAiRmFpbCAjMiIgPDwgZW5kbDt9CiAgLy8g0K3RgtC+INC+0YLQvdC+0YjQtdC90LjQtSDRgtGA0LDQvdC30LjRgtC40LLQvdC+LCDQtdGB0LvQuCDQsNGA0LrRgtCw0L3Qs9C10L3RgSDQt9Cw0LLQuNGB0LjRgiDRgtC+0LvRjNC60L4g0L7RgiDQstGF0L7QtNC90YvRhSDQtNCw0L3QvdGL0YUKICByZXR1cm4gYXRhbjIoYSwwKSA8IGF0YW4yKGIsMCk7Cn0KCmludCBtYWluICgpIHsKICBjb3V0IDw8IGxzdzAoMSwzMikgPDwgJyAnIDw8IGxzdzAoMzIsMSkgPDwgZW5kbDsKICAjaWZkZWYgX19NSU5HVzMyX18KICBjb3V0IDw8ICJJJ20gcnVubmluZyBvbiBNaW5HVyAzMiIgPDwgZW5kbDsKICAjZW5kaWYKICB2ZWN0b3I8aW50PiBwZXJtOwogIGZvciAoaW50IGo9MTtqPDI1MDtqKyspIHsKICAgIHBlcm0ucHVzaF9iYWNrKGopOwogIH0KICBzb3J0KHBlcm0uYmVnaW4oKSxwZXJtLmVuZCgpLGxzdzApOwp9Cg==