#include <iostream>
using namespace std;
bool canFormRectangle(int a1, int b1, int a2, int b2) {
// Thử tất cả các cách xoay của 2 hình
int w1[2] = {a1, b1};
int h1[2] = {b1, a1};
int w2[2] = {a2, b2};
int h2[2] = {b2, a2};
for (int i = 0; i < 2; ++i) { // xoay hình 1
for (int j = 0; j < 2; ++j) { // xoay hình 2
// Cùng chiều cao, ghép theo chiều ngang
if (h1[i] == h2[j] && w1[i] + w2[j] == h1[i])
return true;
if (h1[i] == h2[j])
return true;
// Cùng chiều rộng, ghép theo chiều dọc
if (w1[i] == w2[j] && h1[i] + h2[j] == w1[i])
return true;
if (w1[i] == w2[j])
return true;
// Ghép tạo hình chữ nhật: cùng chiều cao, tổng chiều rộng
if (h1[i] == h2[j] && (w1[i] + w2[j] > 0))
return true;
if (w1[i] == w2[j] && (h1[i] + h2[j] > 0))
return true;
// Hoặc đơn giản:
if ((h1[i] == h2[j] && w1[i] + w2[j] == h1[i] + w2[j]) ||
(w1[i] == w2[j] && h1[i] + h2[j] == h1[i] + h2[j]))
return true;
}
}
return false;
}
int main() {
int a1, b1, a2, b2;
cin >> a1 >> b1 >> a2 >> b2;
if (canFormRectangle(a1, b1, a2, b2))
cout << "1\n";
else
cout << "0\n";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKYm9vbCBjYW5Gb3JtUmVjdGFuZ2xlKGludCBhMSwgaW50IGIxLCBpbnQgYTIsIGludCBiMikgewogICAgLy8gVGjhu60gdOG6pXQgY+G6oyBjw6FjIGPDoWNoIHhvYXkgY+G7p2EgMiBow6xuaAogICAgaW50IHcxWzJdID0ge2ExLCBiMX07CiAgICBpbnQgaDFbMl0gPSB7YjEsIGExfTsKICAgIGludCB3MlsyXSA9IHthMiwgYjJ9OwogICAgaW50IGgyWzJdID0ge2IyLCBhMn07CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyOyArK2kpIHsgLy8geG9heSBow6xuaCAxCiAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCAyOyArK2opIHsgLy8geG9heSBow6xuaCAyCiAgICAgICAgICAgIC8vIEPDuW5nIGNoaeG7gXUgY2FvLCBnaMOpcCB0aGVvIGNoaeG7gXUgbmdhbmcKICAgICAgICAgICAgaWYgKGgxW2ldID09IGgyW2pdICYmIHcxW2ldICsgdzJbal0gPT0gaDFbaV0pCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgaWYgKGgxW2ldID09IGgyW2pdKQogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CgogICAgICAgICAgICAvLyBDw7luZyBjaGnhu4F1IHLhu5luZywgZ2jDqXAgdGhlbyBjaGnhu4F1IGThu41jCiAgICAgICAgICAgIGlmICh3MVtpXSA9PSB3MltqXSAmJiBoMVtpXSArIGgyW2pdID09IHcxW2ldKQogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIGlmICh3MVtpXSA9PSB3MltqXSkKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwoKICAgICAgICAgICAgLy8gR2jDqXAgdOG6oW8gaMOsbmggY2jhu68gbmjhuq10OiBjw7luZyBjaGnhu4F1IGNhbywgdOG7lW5nIGNoaeG7gXUgcuG7mW5nCiAgICAgICAgICAgIGlmIChoMVtpXSA9PSBoMltqXSAmJiAodzFbaV0gKyB3MltqXSA+IDApKQogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CgogICAgICAgICAgICBpZiAodzFbaV0gPT0gdzJbal0gJiYgKGgxW2ldICsgaDJbal0gPiAwKSkKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwoKICAgICAgICAgICAgLy8gSG/hurdjIMSRxqFuIGdp4bqjbjoKICAgICAgICAgICAgaWYgKChoMVtpXSA9PSBoMltqXSAmJiB3MVtpXSArIHcyW2pdID09IGgxW2ldICsgdzJbal0pIHx8CiAgICAgICAgICAgICAgICAodzFbaV0gPT0gdzJbal0gJiYgaDFbaV0gKyBoMltqXSA9PSBoMVtpXSArIGgyW2pdKSkKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gZmFsc2U7Cn0KCmludCBtYWluKCkgewogICAgaW50IGExLCBiMSwgYTIsIGIyOwogICAgY2luID4+IGExID4+IGIxID4+IGEyID4+IGIyOwoKICAgIGlmIChjYW5Gb3JtUmVjdGFuZ2xlKGExLCBiMSwgYTIsIGIyKSkKICAgICAgICBjb3V0IDw8ICIxXG4iOwogICAgZWxzZQogICAgICAgIGNvdXQgPDwgIjBcbiI7CgogICAgcmV0dXJuIDA7Cn0=