N = int(input()) xs = [] for _ in range(N): A, B = map(int, input().split()) xs.append((A, B)) dp = [[0] * (N+1) for _ in range(N+1)] # dp[i][j] # i : i ターン目以降で # j : 2 種類目のカードを j 回取ったときの # ダメージの最大値 for i in reversed(range(N)): # i ターン目 a, b = xs[i] for j in range(N): # 攻撃した回数 if i+j >= N: break # 1 種類目のカードを選ぶ v = j * a dp[i][j] = max(dp[i][j], dp[i+1][j] + v) # 2 種類目のカードを選ぶ dp[i][j+1] = max(dp[i][j+1], dp[i+1][j] + b) ans = max(dp[0]) print(ans)