시작점에서 정수 직선의 모든 점에 도달하도록 점프 길이 카드를 최소 비용으로 사는 문제이며, 불가능하면 -1을 출력합니다.
음의 정수, 000, 양의 정수로 나타낼 수 있는 무한히 긴 1차원 좌표가 있다. 민호는 이 좌표의 한 점에 서 있다.
민호 앞에는 카드 nnn장을 파는 상점이 있다. iii번째 카드에는 길이 lil_ili와 가격 cic_ici가 적혀 있다. 민호가 cic_ici원을 내고 이 카드를 사면, 임의의 점 xxx에서 x−lix - l_ix−li 또는 x+lix + l_ix+li로 점프할 수 있다.
처음에 민호는 카드가 없어서 서 있던 자리에서 움직일 수 없다. 돈을 써서 카드를 사면 점프해서 다른 점으로 갈 수 있다.
민호는 카드를 몇 장 사서 이 좌표의 모든 점에 갈 수 있게 되기를 원한다. 모든 점에 갈 수 있는 경우가 존재하면, 되도록 적은 비용으로 카드를 사려고 한다.
카드를 사서 모든 점을 방문할 수 있는지 판단하고, 가능하면 그중 가장 적은 비용을 계산하는 프로그램을 작성하라.
첫째 줄에 카드의 개수 nnn (1≤n≤3001 \le n \le 3001≤n≤300)이 주어진다.
둘째 줄에 카드 nnn장의 길이 l1,l2,…,lnl_1, l_2, \ldots, l_nl1,l2,…,ln (1≤li≤1091 \le l_i \le 10^91≤li≤109)이 주어진다.
셋째 줄에 카드 nnn장의 가격 c1,c2,…,cnc_1, c_2, \ldots, c_nc1,c2,…,cn (1≤ci≤1051 \le c_i \le 10^51≤ci≤105)이 주어진다.
카드를 몇 장 사서 모든 점에 갈 수 있는 경우가 존재하지 않으면 −1-1−1을 출력한다.
가능한 경우가 존재하면 필요한 비용 중 가장 작은 값을 출력한다.