#include <iostream>
using namespace std;
typedef struct info {
int T;
int P;
} info;
int N;
info sch[16];
int rst = 0;
void input() {
cin >> N;
for (int i = 1; i <= N; i++) {
cin >> sch[i].T >> sch[i].P;
}
}
void dfs(int curr, int pay) {
if (curr + sch[curr].T - 1 > N) return;
if (rst < pay) rst = pay;
for (int i = curr + sch[curr].T; i <= N; i++) {
dfs(i, pay + sch[i].P);
}
}
int main() {
input();
for (int i = 1; i <= N; i++) {
dfs(i, sch[i].P);
}
cout << rst << endl;
}
M개중 N개를 고르는 문제.
넘겨줄 파라미터를 잘 골라야 하며 for 문 작성 시 주의.