Informatica Online Judge

  카드뽑기 (Small) [0556 / 022C]

Time Limit(Test case) : 1000(ms)
Number of users who solved : 270   Total Tried : 846


The Champion of this Problem (C++) : gs15021 - ms / 400byte
My Best Submission (C++) : N/A

[]

Background

경곽이는 N장의 서로 다른 숫자가 적힌 카드가 들어있는 상자에서 원하는 카드를 뽑았다.

카드에 적힌 숫자가 바로 경곽이가 얻은 점수이다.

다시 그 카드를 집어넣고 다시 다른 숫자를 뽑는다.

이러한 과정을 4번 반복하여 총 4회의 점수를 얻을 수 있다.

4번의 점수 합계가 M점이 될 수 있다면 경곽이는 게임에서 이긴다.

하지만 M점이 될 수 없다면 경곽이는 지게 된다.

N장의 카드가 주어질 때, 이 게임에서 경곽이가 이길 수 있다면 YES를 도저히 이길 수 없는 카드배치라면 NO를 출력하는 프로그램을 만드시오.

Input

입력은 첫 번째 줄에 N과 M이 공백으로 구분되어 입력된다.
다음 줄에 N개의 서로 다른 정수가 오름차순으로 공백으로 구분되어 입력된다.

* N은 70이하의 정수이다.
* M은 100,000,000이하의 자연수이다.

Output

이길 수 있다면 YES를 아니면 NO를 출력한다.

IO Example

입력
3 10
1 3 5

출력
YES

입력2
3 9
1 3 5

출력
NO

* 첫 번째 경우는 1, 3, 3, 3을 뽑으면 10을 만들 수 있으므로 YES, 두 번째 경우는 어떤 카드를 4번 뽑아도 9를 만들 수 없으므로 NO를 출력

Submit : [C/C++] | [C++11] | [Obj-C] | [Java] | [Python]
Prob Analysis : [Problem Statistics] | [Solution]