작은 나라에 막 도착했다. 며칠 전 거대한 허리케인이 이 나라를 휩쓸고 지나갔다.
이 나라는 1번부터 n번까지 번호가 붙은 섬 n개로 이루어져 있다. 예전에는 많은 다리가 섬을 이어 주었지만, 홍수에 다리가 모두 떠내려갔다. 주민이 다시 섬 사이를 오가려면 새 다리가 필요하다.
문제는 비용이다. 나라 살림이 넉넉하지 않아 정부는 지출을 줄여야 한다. 정부는 뛰어난 프로그래머인 당신에게 다리를 다시 놓는 최소 비용을 계산해 달라고 부탁했다.
다리 하나는 섬 두 개를 양방향으로 잇는다. 섬 i에는 두 값 pi와 di가 주어진다. 섬 i에 연결할 수 있는 다리는 최대 di개다. 섬 i와 섬 j를 잇는 다리를 놓는 비용은 ∣pi−pj∣다. 어느 두 섬 사이든 다리를 따라 오갈 수 있어야 하는데, 주어진 제한 안에서는 그런 배치가 아예 불가능할 때도 있다.
입력은 여러 개의 데이터 집합으로 이루어진다. 데이터 집합은 최대 60개다. 각 데이터 집합의 형식은 다음과 같다.
n
p_1 d_1
p_2 d_2
...
p_n d_n
입력의 값은 모두 정수다. 첫 줄의 n (2≤n≤4000)은 섬의 개수다. 이어지는 n개의 줄에는 각 섬의 값이 주어지며, pi (1≤pi≤109)와 di (1≤di≤n)는 섬 i의 두 값이다.
입력의 끝은 0 하나만 있는 줄로 나타낸다.
각 데이터 집합마다, 주어진 제한 안에서 다리를 다시 놓을 수 있으면 최소 비용을 한 줄에 출력한다. 불가능하면 −1을 한 줄에 출력한다.