수렵의 시간이다!
시간 제한1초메모리 제한1024 MB
세 종류의 방어구를 각각 최대 하나씩 예산 안에서 고르고, 원하면 K를 한 번 지불해 한 방어구의 스킬 레벨 증가량 하나를 옮겨 총 공격력 증가량을 최대화한다.
문제
Cube219는 최근 M게임을 즐겨한다. M게임에는 스킬이라는 특수한 시스템이 존재한다. 스킬은 개가 있으며, 각 스킬에는 최대 레벨과 레벨부터 레벨마다 부여된 공격력 증가량이 있다. 처음에 스킬들의 레벨은 전부 이다. 이러한 스킬들의 레벨은 방어구를 착용하면 올릴 수 있다. 방어구는 머리, 상의, 하의 총 종류가 있으며, 종류마다 최대 개의 방어구를 착용할 수 있다. 각 방어구에는 특정 스킬들의 레벨 증가량이 부여되어 있다. 스킬의 레벨이 최대 레벨을 넘을 경우 공격력 증가량은 최대 레벨에 부여된 것을 따른다.
수렵을 하면서 골드를 모은 Cube219는 더 강해지기 위해 방어구를 파는 상점에 갔다. 상점에는 개의 방어구를 각각 골드로 팔고있다.
여기에 추가로, 상점에서는 강화를 골드를 지불하고 전체 방어구 중 최대 한 개의 방어구에 할 수 있는데, 강화를 하면 방어구에 부여된 스킬 레벨 증가량 중 하나를 감소시키고 원하는 스킬의 레벨 증가량 중 하나를 증가시킬 수 있다. 여기서 방어구에 이상 부여된 스킬 레벨 증가량만 감소시킬 수 있으며, 부여되지 않은 스킬의 레벨도 증가시킬 수 있다.
Cube219는 처음에는 아무 방어구도 착용하고 있지 않다. Cube219가 가지고 있는 돈과 구입할 수 있는 방어구 목록이 있을 때, 얻을 수 있는 최대 공격력 증가량을 구하여라.
입력
첫 번째 줄에 가지고 있는 돈 와 강화 비용 가 공백으로 구분되어 주어진다.
다음 개의 줄에 번 스킬의 최대 레벨 와 이어서 개의 정수 가 공백으로 구분되어 주어진다. 는 번 스킬이 레벨일 때 공격력 증가량이다.
다음 줄부터는 순서대로 머리, 상의, 하의 총 종류의 방어구의 정보가 주어진다.
방어구 정보의 첫 번째 줄에는 방어구의 개수 이 정수로 주어진다.
방어구 정보의 다음 줄에는 개의 정수 이 공백으로 구분되어 주어진다. 는 번째 방어구의 가격이다.
방어구 정보의 다음 개의 줄에는 개의 정수 가 공백으로 구분되어 주어진다. 는 번째 방어구의 번 스킬 레벨 증가량이다. 가 이면 번 스킬 레벨 증가량이 부여되지 않은 것이다.
출력
Cube219가 얻을 수 있는 최대 공격력 증가량을 출력한다.
힌트
Cube219가 방어구를 착용할 수 없을 수도 있음에 유의하라.
또한 Python 사용자는 PyPy3로 제출하는 것을 권장한다.