import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.util.StringTokenizer;
/**
* @author 은서파
* @since 2021. 10. 19.
* @see
* @performance 11680 96
* @category #
* @memo
*/
public class BJ_S3_14501_퇴사{
static BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
static StringBuilder output = new StringBuilder();
static StringTokenizer tokens;
static int N; //1 <=N <=15
static int MAX;
static int [][] data;
public static void main(String[] args) throws IOException {
input = new BufferedReader(new StringReader(src));
N = Integer.parseInt(input.readLine());
data = new int [N+1][2];
for(int n=1; n<=N; n++) {
tokens = new StringTokenizer(input.readLine());
data[n][0]=Integer.parseInt(tokens.nextToken());
data[n][1]=Integer.parseInt(tokens.nextToken());
}// 입력 완료!!
powerSet(1, 0);
System.out.println(MAX);
}
private static void powerSet(int today, int benefit) {
// 우리가 찾는 최대값 - 결정 시점?
MAX = Math.max(MAX, benefit);
// 기저조건
if(today==N+1) {
return;
}
// 상담을 할때.. - 상담이 근무일 이내에 끝나야 상담 가능
// 오늘이 7일이고 소요기간이 1일인 상담이 있다면?
if(today + data[today][0]<=N+1) {
powerSet(today + data[today][0], benefit + data[today][1]);
}
// 상담을 안할 때..
powerSet(today+1, benefit);
}
// REMOVE_START
private static String src = "7\n"
+ "3 10\n"
+ "5 20\n"
+ "1 10\n"
+ "1 20\n"
+ "2 15\n"
+ "4 40\n"
+ "2 200";
// REMOVE_END
}