흥이 오르는 점수 발표

합이 x인 양의 추가 점수를 오름차순으로 발표할 때 매번 선두가 바뀌어야 한다는 조건에서 만들 수 있는 서로 다른 최종 순위의 수를 센다.

어려움9동적 계획법조합론비트 연산정렬아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

가수 nn명이 겨루는 노래 대결을 보고 있다. 마지막 라운드가 끝났고, 지금 ii번 가수의 점수는 pip_i이다. 현재 점수가 같은 가수는 없다.

이제 심사위원이 추가 점수를 나눠 준다. ii번 가수는 qi1q_i \ge 1점을 받고, 심사위원은 q1+q2++qn=xq_1 + q_2 + \dots + q_n = x를 지켜야 한다.

심사위원은 qiq_i를 작은 값부터 큰 값 순서로 하나씩 발표한다. 같은 점수를 받은 가수가 여럿이면 그중 pip_i가 작은 가수부터 발표한다. 자기 qiq_i가 발표된 가수의 총점은 그 자리에서 pi+qip_i + q_i가 되고, 순위도 곧바로 갱신된다.

발표가 한 번 끝날 때마다 총점이 가장 높은 가수가 한 명뿐이고 그 가수가 직전 1위와 다르면, 이 발표 전체를 흥겨운 발표라고 한다. 첫 발표는 아직 아무것도 발표하지 않은 시점의 순위와 비교한다.

최종 순위는 최종 총점이 높은 가수부터 낮은 가수까지 나열한 것이다. 흥겨운 발표가 되도록 점수를 나눠 줄 때 나오는 서로 다른 최종 순위가 몇 가지인지 구하라.

입력

첫째 줄에 정수 nnxx가 주어진다. (1n121 \le n \le 12, 1x7001 \le x \le 700)

둘째 줄에 정수 p1,p2,,pnp_1, p_2, \dots, p_n이 주어진다. (1pi7001 \le p_i \le 700) pip_i는 모두 다르다.

출력

흥겨운 발표로 만들 수 있는 서로 다른 최종 순위의 개수를 출력한다.

힌트

첫 번째 예제에는 점수가 각각 3점, 1점, 4점인 가수 A, B, C가 있고, 심사위원은 12점을 나눠 준다.

심사위원이 q=[2,7,3]q = [2, 7, 3]을 골랐다고 하자. 발표는 qq가 작은 순서로 진행된다.

  • A를 발표한다. A는 5점이 되어 1위에 오른다.
  • C를 발표한다. C는 7점이 되어 1위에 오른다.
  • B를 발표한다. B는 8점이 되어 1위에 오른다.

이 발표는 흥겨운 발표다.

q=[3,3,6]q = [3, 3, 6]은 흥겨운 발표가 아니다. 첫 발표 뒤에 1위가 두 명이기 때문이다. 3점을 받은 두 가수 중 pip_i가 작은 B를 먼저 발표한다. q=[6,5,1]q = [6, 5, 1]도 흥겨운 발표가 아니다. 첫 발표 뒤에도 1위가 그대로이기 때문이다.

1위부터 꼴찌까지 적었을 때 나올 수 있는 최종 순위는 세 가지다.

  • C, B, A (q=[2,5,5]q = [2, 5, 5])
  • B, C, A (q=[2,8,2]q = [2, 8, 2])
  • C, A, B (q=[4,4,4]q = [4, 4, 4])

B, C, A는 q=[2,8,2]q = [2, 8, 2]q=[2,7,3]q = [2, 7, 3] 두 가지로 만들어지지만 한 번만 센다.