점프하는 민호

시작점에서 정수 직선의 모든 점에 도달하도록 점프 길이 카드를 최소 비용으로 사는 문제이며, 불가능하면 -1을 출력합니다.

보통6동적 계획법정수론수학아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

음의 정수, 00, 양의 정수로 나타낼 수 있는 무한히 긴 1차원 좌표가 있다. 민호는 이 좌표의 한 점에 서 있다.

민호 앞에는 카드 nn장을 파는 상점이 있다. ii번째 카드에는 길이 lil_i와 가격 cic_i가 적혀 있다. 민호가 cic_i원을 내고 이 카드를 사면, 임의의 점 xx에서 xlix - l_i 또는 x+lix + l_i로 점프할 수 있다.

처음에 민호는 카드가 없어서 서 있던 자리에서 움직일 수 없다. 돈을 써서 카드를 사면 점프해서 다른 점으로 갈 수 있다.

민호는 카드를 몇 장 사서 이 좌표의 모든 점에 갈 수 있게 되기를 원한다. 모든 점에 갈 수 있는 경우가 존재하면, 되도록 적은 비용으로 카드를 사려고 한다.

카드를 사서 모든 점을 방문할 수 있는지 판단하고, 가능하면 그중 가장 적은 비용을 계산하는 프로그램을 작성하라.

입력

첫째 줄에 카드의 개수 nn (1n3001 \le n \le 300)이 주어진다.

둘째 줄에 카드 nn장의 길이 l1,l2,,lnl_1, l_2, \ldots, l_n (1li1091 \le l_i \le 10^9)이 주어진다.

셋째 줄에 카드 nn장의 가격 c1,c2,,cnc_1, c_2, \ldots, c_n (1ci1051 \le c_i \le 10^5)이 주어진다.

출력

카드를 몇 장 사서 모든 점에 갈 수 있는 경우가 존재하지 않으면 1-1을 출력한다.

가능한 경우가 존재하면 필요한 비용 중 가장 작은 값을 출력한다.