#include <bits/stdc++.h>
using namespace std;
int n, d;
int a[15];
int ans;
bool marked[15];
void backtrack(int i, int sum_a, int cnt) {
if (i == n + 1) {
ans = max(ans, cnt);
return;
}
// i đã có cặp rồi
if (marked[i]) {
backtrack(i + 1, sum_a, cnt);
return;
}
// i chưa bắt cặp với ai
backtrack(i + 1, sum_a, cnt); // i không bắt cặp với ai cả
for (int j = 1; j <= n; j++) { // tìm người để bắt cặp với i
if (j == i) continue;
if (marked[j]) continue;
if (sum_a != -1 && a[i] + a[j] != sum_a) continue;
marked[i] = marked[j] = true;
backtrack(i + 1, a[i] + a[j], cnt + 1);
marked[i] = marked[j] = false;
}
} // O((n - 1) * (n - 3) * (n - 5) * ...)
void do_sub1() {
ans = 0;
backtrack(1, -1, 0);
cout << ans << '\n';
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
freopen("PAIR.INP", "r", stdin);
freopen("PAIR.OUT", "w", stdout);
cin >> n >> d;
for (int i = 1; i <= n; i++) cin >> a[i];
if (n <= 10 && d == 0) do_sub1();
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOyAKCmludCBuLCBkOyAgCmludCBhWzE1XTsgIAoKaW50IGFuczsgICAKYm9vbCBtYXJrZWRbMTVdOyAgCgp2b2lkIGJhY2t0cmFjayhpbnQgaSwgaW50IHN1bV9hLCBpbnQgY250KSB7CglpZiAoaSA9PSBuICsgMSkgewoJCWFucyA9IG1heChhbnMsIGNudCk7IAoJCXJldHVybjsgCgl9CgoJLy8gaSDEkcOjIGPDsyBj4bq3cCBy4buTaQoJaWYgKG1hcmtlZFtpXSkgewoJCWJhY2t0cmFjayhpICsgMSwgc3VtX2EsIGNudCk7IAoJCXJldHVybjsgCgl9CgoJLy8gaSBjaMawYSBi4bqvdCBj4bq3cCB24bubaSBhaSAKCQoJYmFja3RyYWNrKGkgKyAxLCBzdW1fYSwgY250KTsgLy8gaSBraMO0bmcgYuG6r3QgY+G6t3AgduG7m2kgYWkgY+G6oyAgCgoJZm9yIChpbnQgaiA9IDE7IGogPD0gbjsgaisrKSB7IC8vIHTDrG0gbmfGsOG7nWkgxJHhu4MgYuG6r3QgY+G6t3AgduG7m2kgaSAKCQlpZiAoaiA9PSBpKSBjb250aW51ZTsgIAoJCWlmIChtYXJrZWRbal0pIGNvbnRpbnVlOyAgIAoJCWlmIChzdW1fYSAhPSAtMSAmJiBhW2ldICsgYVtqXSAhPSBzdW1fYSkgY29udGludWU7ICAKCQltYXJrZWRbaV0gPSBtYXJrZWRbal0gPSB0cnVlOyAgCQoJCWJhY2t0cmFjayhpICsgMSwgYVtpXSArIGFbal0sIGNudCArIDEpOyAgIAoJCW1hcmtlZFtpXSA9IG1hcmtlZFtqXSA9IGZhbHNlOyAgCQkKCX0KfSAvLyBPKChuIC0gMSkgKiAobiAtIDMpICogKG4gLSA1KSAqIC4uLikKCnZvaWQgZG9fc3ViMSgpIHsKCWFucyA9IDA7ICAgCgliYWNrdHJhY2soMSwgLTEsIDApOyAgCgljb3V0IDw8IGFucyA8PCAnXG4nOyAKfQoKaW50IG1haW4oKSB7Cglpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IAoJY2luLnRpZShudWxscHRyKTsgIAoJZnJlb3BlbigiUEFJUi5JTlAiLCAiciIsIHN0ZGluKTsgCglmcmVvcGVuKCJQQUlSLk9VVCIsICJ3Iiwgc3Rkb3V0KTsgCgljaW4gPj4gbiA+PiBkOyAgIAoJZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSBjaW4gPj4gYVtpXTsgCgoJaWYgKG4gPD0gMTAgJiYgZCA9PSAwKSBkb19zdWIxKCk7ICAKfQo=