수렵의 시간이다!

아직 제출이 없습니다시간 제한1초메모리 제한1024 MB

문제

Cube219는 최근 M게임을 즐겨한다. M게임에는 스킬이라는 특수한 시스템이 존재한다. 스킬은 55개가 있으며, 각 스킬에는 최대 레벨과 11레벨부터 레벨마다 부여된 공격력 증가량이 있다. 처음에 스킬들의 레벨은 전부 00이다. 이러한 스킬들의 레벨은 방어구를 착용하면 올릴 수 있다. 방어구는 머리, 상의, 하의 총 33종류가 있으며, 종류마다 최대 11개의 방어구를 착용할 수 있다. 각 방어구에는 특정 스킬들의 레벨 증가량이 부여되어 있다. 스킬의 레벨이 최대 레벨을 넘을 경우 공격력 증가량은 최대 레벨에 부여된 것을 따른다.

수렵을 하면서 골드를 모은 Cube219는 더 강해지기 위해 방어구를 파는 상점에 갔다. 상점에는 MM개의 방어구를 각각 c_ic\_i골드로 팔고있다.

여기에 추가로, 상점에서는 강화를 KK골드를 지불하고 전체 방어구 중 최대 한 개의 방어구에 할 수 있는데, 강화를 하면 방어구에 부여된 스킬 레벨 증가량 중 하나를 11 감소시키고 원하는 스킬의 레벨 증가량 중 하나를 11 증가시킬 수 있다. 여기서 방어구에 11이상 부여된 스킬 레벨 증가량만 감소시킬 수 있으며, 부여되지 않은 스킬의 레벨도 증가시킬 수 있다.

Cube219는 처음에는 아무 방어구도 착용하고 있지 않다. Cube219가 가지고 있는 돈과 구입할 수 있는 방어구 목록이 있을 때, 얻을 수 있는 최대 공격력 증가량을 구하여라.

입력

첫 번째 줄에 가지고 있는 돈 TT와 강화 비용 KK가 공백으로 구분되어 주어진다. (0T,K100,000)(0 \leq T,K \leq 100\\,000)

다음 55개의 줄에 ii번 스킬의 최대 레벨 l_il\_i와 이어서 l_il\_i개의 정수 a_i,1,,a_i,l_ia\_{i,1},\cdots,a\_{i,l\_i}가 공백으로 구분되어 주어진다. (1l_i100;(1 \leq l\_i \leq 100; 1a_i,j100,000;1 \leq a\_{i,j} \leq 100\\,000; a_i,ja_i,j+1)a\_{i,j} \leq a\_{i,j+1}) a_i,ja\_{i,j}ii번 스킬이 jj레벨일 때 공격력 증가량이다.

다음 줄부터는 순서대로 머리, 상의, 하의 총 33종류의 방어구의 정보가 주어진다.

방어구 정보의 첫 번째 줄에는 방어구의 개수 MM이 정수로 주어진다. (1M50)(1 \leq M \leq 50)

방어구 정보의 다음 줄에는 MM개의 정수 c_1,,c_Mc\_1,\cdots,c\_M이 공백으로 구분되어 주어진다. (1c_i100,000)(1 \leq c\_i \leq 100\\,000) c_ic\_iii번째 방어구의 가격이다.

방어구 정보의 다음 MM개의 줄에는 55개의 정수 v_i,1,,v_i,5v\_{i,1},\cdots,v\_{i,5}가 공백으로 구분되어 주어진다. (0v_i,jl_j)(0 \leq v\_{i,j} \leq l\_j) v_i,jv\_{i,j}ii번째 방어구의 jj번 스킬 레벨 증가량이다. v_i,jv\_{i,j}00이면 jj번 스킬 레벨 증가량이 부여되지 않은 것이다.

출력

Cube219가 얻을 수 있는 최대 공격력 증가량을 출력한다.

힌트

Cube219가 방어구를 착용할 수 없을 수도 있음에 유의하라.

또한 Python 사용자는 PyPy3로 제출하는 것을 권장한다.