장의 카드가 있다. 각각의 카드에는 서로 다른 정수가 쓰여 있어서, 모두 개의 서로 다른 정수가 주어져 있다. 이 정수들을 차례로 , , , ..., 이라고 하자. 여러분이 할 일은, 정수 가 주어졌을 때, 이 카드 중 서로 다른 세 장을 골라서 여기에 쓰여진 세 수의 합이 W가 되는 경우가 몇 가지가 있는 지 알아내는 것이다.
예를 들어, 이고 다음과 같이 여섯 개의 정수들이 주어졌다고 하자.
만약 로 주어졌다면, 이 중 , , 을 고르면 이므로 조건을 만족하고, 다른 방법으로 를 만들 수는 없으므로 세 수의 합이 가 되는 경우는 총 가지이다. 만약 로 주어졌다면, 어떤 세 수를 고르더라도 합이 이 되는 경우를 만들 수 없으므로 세 수의 합이 이 되는 경우는 총 0가지이다.
, , , , , 이 주어졌을 때 , , ..., 중 서로 다른 세 수의 합이 W가 되는 경우의 수를 구하는 프로그램을 작성하시오.
첫째 줄에 두 정수 , 가 주어진다. 은 주어지는 서로 다른 정수의 개수이며, 는 이 중 서로 다른 세 수를 더해서 만들고 싶은 합에 해당하는 수이다. 문제의 정의상 , 을 만족한다.
두번째 줄에는 개의 서로 다른 정수 , , , , 이 주어진다. 이 수들은 각각 이상 이하의 범위에 있다.
출력은 한 줄로 구성된다. 첫 줄에는 주어진 , , ..., 중 서로 다른 세 수를 골라서 이 수의 합이 가 되게 만들 수 있는 가짓수를 출력한다. 만약 합이 가 되게 할 수 없다면, 을 출력한다.
6 15 3 2 11 5 7 13
1
3 6 1 2 3
1
7 10 1 2 3 4 5 6 7
4
입력 케이스들은 다음과 같은 종류로 구별되며, 한 종류의 케이스를 다 맞추어야 그 종류에 배정된 점수를 받을 수 있다.
종류 1: 13점
종류 2: 31점
종류 3: 56점
별다른 제약조건 없음.