""" https://yukicoder.me/problems/no/798 N//3個 freeにできる 買う商品を決め撃つと、Bが大きい順に取るのが最適 B降順そーとして dp[i][K] = i番目まで決めて、K個フリーにした場合の最小 """ N = int(input()) BA = [] for i in range(N): A,B = map(int,input().split()) BA.append( (B,A) ) BA.sort() BA.reverse() F = N//3 INF = float("inf") dp = [INF] * (F+1) dp[0] = 0 for i in range(N): b,a = BA[i] ndp = [INF] * (F+1) for k in range(F+1): # freeにしない ndp[k] = min(ndp[k], dp[k] + a + b*(i-k) ) # freeにする if k != F: ndp[k+1] = min(ndp[k+1] , dp[k]) dp = ndp print (min(dp))