import java.io.*;
import java.util.*;
class Solution {
public static int Solve
(int N,
String Xstr, List
<Integer
> A
) { long X
= Long.
parseLong(Xstr
); for (int v : A) if (v == X) return 0;
Set<Long> targets = new HashSet<>();
long maxTarget
= Long.
MIN_VALUE; for (int v : A) {
long t = X - v;
targets.add(t);
if (t > maxTarget) maxTarget = t;
}
class State {
long s;
int last;
int steps;
State(long s, int l, int st) { this.s = s; this.last = l; this.steps = st; }
}
Queue<State> q = new ArrayDeque<>();
Set<String> visited = new HashSet<>();
q.add(new State(0L, -1, 0));
visited.add("0," + -1);
while (!q.isEmpty()) {
State cur = q.poll();
for (int j = 0; j < N; ++j) {
if (j == cur.last) continue;
long newS = 2L * cur.s + A.get(j);
if (targets.contains(newS)) return cur.steps + 1;
if (newS > maxTarget) continue;
if (!visited.contains(key)) {
visited.add(key);
q.add(new State(newS, j, cur.steps + 1));
}
}
}
return -1;
}
public static void main
(String[] args
) { Scanner scan
= new Scanner
(System.
in); int N
= Integer.
parseInt(scan.
nextLine().
trim()); String X
= scan.
nextLine().
trim(); List<Integer> A = new ArrayList<>();
for (int i
= 0; i
< N
; i
++) A.
add(Integer.
parseInt(scan.
nextLine().
trim())); System.
out.
println(Solve
(N, X, A
)); }
}
aW1wb3J0IGphdmEuaW8uKjsKaW1wb3J0IGphdmEudXRpbC4qOwoKY2xhc3MgU29sdXRpb24gewogICAgcHVibGljIHN0YXRpYyBpbnQgU29sdmUoaW50IE4sIFN0cmluZyBYc3RyLCBMaXN0PEludGVnZXI+IEEpIHsKICAgICAgICBsb25nIFggPSBMb25nLnBhcnNlTG9uZyhYc3RyKTsKICAgICAgICBmb3IgKGludCB2IDogQSkgaWYgKHYgPT0gWCkgcmV0dXJuIDA7CgogICAgICAgIFNldDxMb25nPiB0YXJnZXRzID0gbmV3IEhhc2hTZXQ8PigpOwogICAgICAgIGxvbmcgbWF4VGFyZ2V0ID0gTG9uZy5NSU5fVkFMVUU7CiAgICAgICAgZm9yIChpbnQgdiA6IEEpIHsKICAgICAgICAgICAgbG9uZyB0ID0gWCAtIHY7CiAgICAgICAgICAgIHRhcmdldHMuYWRkKHQpOwogICAgICAgICAgICBpZiAodCA+IG1heFRhcmdldCkgbWF4VGFyZ2V0ID0gdDsKICAgICAgICB9CgogICAgICAgIGNsYXNzIFN0YXRlIHsgCiAgICAgICAgICAgIGxvbmcgczsgCiAgICAgICAgICAgIGludCBsYXN0OyAKICAgICAgICAgICAgaW50IHN0ZXBzOyAKICAgICAgICAgICAgU3RhdGUobG9uZyBzLCBpbnQgbCwgaW50IHN0KSB7IHRoaXMucyA9IHM7IHRoaXMubGFzdCA9IGw7IHRoaXMuc3RlcHMgPSBzdDsgfSAKICAgICAgICB9CgogICAgICAgIFF1ZXVlPFN0YXRlPiBxID0gbmV3IEFycmF5RGVxdWU8PigpOwogICAgICAgIFNldDxTdHJpbmc+IHZpc2l0ZWQgPSBuZXcgSGFzaFNldDw+KCk7CgogICAgICAgIHEuYWRkKG5ldyBTdGF0ZSgwTCwgLTEsIDApKTsKICAgICAgICB2aXNpdGVkLmFkZCgiMCwiICsgLTEpOwoKICAgICAgICB3aGlsZSAoIXEuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgIFN0YXRlIGN1ciA9IHEucG9sbCgpOwogICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IE47ICsraikgewogICAgICAgICAgICAgICAgaWYgKGogPT0gY3VyLmxhc3QpIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgbG9uZyBuZXdTID0gMkwgKiBjdXIucyArIEEuZ2V0KGopOwogICAgICAgICAgICAgICAgaWYgKHRhcmdldHMuY29udGFpbnMobmV3UykpIHJldHVybiBjdXIuc3RlcHMgKyAxOwogICAgICAgICAgICAgICAgaWYgKG5ld1MgPiBtYXhUYXJnZXQpIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgU3RyaW5nIGtleSA9IG5ld1MgKyAiLCIgKyBqOwogICAgICAgICAgICAgICAgaWYgKCF2aXNpdGVkLmNvbnRhaW5zKGtleSkpIHsKICAgICAgICAgICAgICAgICAgICB2aXNpdGVkLmFkZChrZXkpOwogICAgICAgICAgICAgICAgICAgIHEuYWRkKG5ldyBTdGF0ZShuZXdTLCBqLCBjdXIuc3RlcHMgKyAxKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIC0xOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKICAgICAgICBTY2FubmVyIHNjYW4gPSBuZXcgU2Nhbm5lcihTeXN0ZW0uaW4pOwogICAgICAgIGludCBOID0gSW50ZWdlci5wYXJzZUludChzY2FuLm5leHRMaW5lKCkudHJpbSgpKTsKICAgICAgICBTdHJpbmcgWCA9IHNjYW4ubmV4dExpbmUoKS50cmltKCk7CiAgICAgICAgTGlzdDxJbnRlZ2VyPiBBID0gbmV3IEFycmF5TGlzdDw+KCk7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOOyBpKyspIEEuYWRkKEludGVnZXIucGFyc2VJbnQoc2Nhbi5uZXh0TGluZSgpLnRyaW0oKSkpOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihTb2x2ZShOLCBYLCBBKSk7CiAgICB9Cn0K