#include <iostream>
bool logic_a(double a, double b, double c, double d)
{
return !((a>b&&c>d)||(a<b&&c<d));
}
bool logic_b(double a, double b, double c, double d)
{
return (a>=b&&c<=d)||(a<=b&&c>=d)||(a==b)||(c==d);
}
int main()
{
int num_failures = 0;
double a,b,c,d;
for (int i=-1; i<=1; ++i)
{
a = i;
for (int j=-1; j<=1; ++j)
{
b = j;
for (int k=-1; k<=1; ++k)
{
c = k;
for (int l=-1; l<=1; ++l)
{
d = l;
if (logic_a(a,b,c,d) != logic_b(a,b,c,d))
{
std::cout << "failed with:\n";
std::cout << " a = " << a << '\n'
<< " b = " << b << '\n'
<< " c = " << c << '\n'
<< " d = " << d << "\n\n";
++num_failures;
}
}
}
}
}
std::cout << num_failures << " failures\n";
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKYm9vbCBsb2dpY19hKGRvdWJsZSBhLCBkb3VibGUgYiwgZG91YmxlIGMsIGRvdWJsZSBkKQp7CiAgICByZXR1cm4gISgoYT5iJiZjPmQpfHwoYTxiJiZjPGQpKTsKfQoKYm9vbCBsb2dpY19iKGRvdWJsZSBhLCBkb3VibGUgYiwgZG91YmxlIGMsIGRvdWJsZSBkKQp7CiAgICByZXR1cm4gKGE+PWImJmM8PWQpfHwoYTw9YiYmYz49ZCl8fChhPT1iKXx8KGM9PWQpOwp9CgppbnQgbWFpbigpCnsKICAgIGludCBudW1fZmFpbHVyZXMgPSAwOwogICAgZG91YmxlIGEsYixjLGQ7CiAgICBmb3IgKGludCBpPS0xOyBpPD0xOyArK2kpCiAgICB7CiAgICAgICAgYSA9IGk7CiAgICAgICAgZm9yIChpbnQgaj0tMTsgajw9MTsgKytqKQogICAgICAgIHsKICAgICAgICAgICAgYiA9IGo7CiAgICAgICAgICAgIGZvciAoaW50IGs9LTE7IGs8PTE7ICsraykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgYyA9IGs7CiAgICAgICAgICAgICAgICBmb3IgKGludCBsPS0xOyBsPD0xOyArK2wpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgZCA9IGw7CiAgICAgICAgICAgICAgICAgICAgaWYgKGxvZ2ljX2EoYSxiLGMsZCkgIT0gbG9naWNfYihhLGIsYyxkKSkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAiZmFpbGVkIHdpdGg6XG4iOyAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAiICBhID0gIiA8PCBhIDw8ICdcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIgIGIgPSAiIDw8IGIgPDwgJ1xuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIiAgYyA9ICIgPDwgYyA8PCAnXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiICBkID0gIiA8PCBkIDw8ICJcblxuIjsKICAgICAgICAgICAgICAgICAgICAgICAgKytudW1fZmFpbHVyZXM7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIAogICAgc3RkOjpjb3V0IDw8IG51bV9mYWlsdXJlcyA8PCAiIGZhaWx1cmVzXG4iOwogICAgCn0=