import java.util.Scanner;

/**
 * @author cwz
 * @date 2018-08-help2
 */
public class help2 {
    public static void main(String[] args){
        final int OFFSET = 100000;
        int[][] dp = new int[101][200001];
        int[][] totalValue = new int[101][200001];
        int[][] buf = new int[101][2];

        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        for(int i=1; i<=n; i++){
            int x = sc.nextInt();
            int y = sc.nextInt();
            buf[i][0] = x;
            buf[i][1] = y;
        }

        for(int i=-100000; i<=100000; i++){
            dp[0][i+OFFSET] = Integer.MIN_VALUE;
            totalValue[0][i+OFFSET] = Integer.MIN_VALUE;
        }
        dp[0][0+OFFSET] = 0;
        totalValue[0][0+OFFSET]=0;
        for(int i=1;i<=n;i++){
            for(int j=-100000; j<=100000; j++){
                int tmp1 = Integer.MIN_VALUE, tmp2 = Integer.MIN_VALUE;
                if(j+buf[i][0] <= 100000 && dp[i-1][j+buf[i][0]+OFFSET]!=Integer.MIN_VALUE){
                    tmp1 = totalValue[i-1][j+buf[i][0]+OFFSET] + buf[i][1];
                }
                if(j-buf[i][0] >= -100000 && dp[i-1][j-buf[i][0]+OFFSET]!=Integer.MIN_VALUE){
                    tmp2 = totalValue[i-1][j-buf[i][0]+OFFSET] + buf[i][1];
                }
                if(tmp1 < tmp2) tmp1 = tmp2;
                if(tmp1 < totalValue[i-1][j+OFFSET]) tmp1 = totalValue[i-1][j+OFFSET];
                totalValue[i][j+OFFSET] = tmp1;
            }
        }
        System.out.println(totalValue[n][0+OFFSET]);

    }
}