#include<iostream>
#include<cstdio>
#include<vector>
using namespace std;
int h[105],f[105][10005],root=1,cnt=1,time1,size[10000],ans=-1;
vector<int>son[1000];
void in(int p){
int x,y;
cin>>x>>y;
if(y==0){
int zz=++cnt;;
in(zz);
son[p].push_back(zz);
int yy=++cnt;
in(yy);
son[p].push_back(yy);
h[p]=x*2;
}
else{
h[p]=x*2;
for(int i=1;i<=y;i++){
son[p].push_back(++cnt);
h[cnt]=5;
}
}
}
void dp(int p){
if(son[p].size()==0){
f[p][5]=1;
size[p]=5;
}
for(int i=0;i<son[p].size();i++){
int ss=son[p][i];
dp(ss);
size[p]+=size[ss]+h[ss];
for(int j=min(time1,size[p]);j>=h[ss];j--){
for(int k=0;k<=min(j-h[ss],size[ss]);k++){
f[p][j]=max(f[p][j],f[p][j-k-h[ss]]+f[ss][k]);
}
}
}
}
int main(){
cin>>time1;
in(cnt);
dp(1);
for(int i=1;i<=time1;i++)ans=max(ans,f[1][i]);
cout<<ans;
return 0;
}