업무 처리

각 작업은 가능한 시작일 구간과 시작일별 소요 시간이 주어진다. 구간 안에 끝낼 수 있는 작업 수가 최대가 되도록 일부를 골라 순서를 정한다.

보통7동적 계획법비트 연산정렬아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

영선이는 오늘도 일하고, 내일도 모레도 일한다.

영선이에게 업무 nn개가 할당됐다. 각 업무는 정해진 기간 안에서만 할 수 있고, 시작하는 날에 따라 걸리는 시간이 달라진다.

기간이 [a,b][a, b]인 업무를 dd일에 시작해서 TT일이 걸린다면 dd일부터 d+T1d + T - 1일까지 일하고 d+T1d + T - 1일에 끝난다. 따라서 ada \le d이고 d+T1bd + T - 1 \le b일 때만 그 업무를 dd일에 시작할 수 있다.

예를 들어 기간이 [1,5][1, 5]인 업무가 있고, 걸리는 시간이 1일에 시작하면 4일, 2일에 시작하면 2일, 3일에 시작하면 3일, 4일에 시작하면 5일, 5일에 시작하면 2일이라고 하자. 4일이나 5일에 시작하면 5일을 넘겨서 기간 안에 끝낼 수 없다. 2일에 시작하면 3일에 끝나므로 가장 빨리 마칠 수 있다.

업무는 한 번에 하나씩 처리한다. 앞선 업무가 ee일에 끝났다면 다음 업무는 바로 그 ee일부터 시작할 수 있다.

모든 업무를 다 할 필요는 없다. 업무 정보가 주어질 때, 처리할 수 있는 업무의 최대 개수를 구하시오.

입력

첫째 줄에 업무의 개수 nn이 주어진다. (1n151 \le n \le 15)

다음 nn개의 줄에 업무 정보가 한 줄에 하나씩 주어진다. 각 줄에는 두 정수 aabb가 먼저 주어지고, 이어서 정수 ba+1b - a + 1개가 주어진다. 이 정수들은 그 업무를 aa일, a+1a + 1일, \dots, bb일에 시작할 때 걸리는 시간 TiT_i를 차례대로 나타낸다. (1ab1001 \le a \le b \le 100, 1Ti1001 \le T_i \le 100)

출력

처리할 수 있는 업무의 최대 개수를 첫째 줄에 출력한다.