#include<bits/stdc++.h>
using namespace std;
inline int read(){
int s=0,w=1;
char ch=getchar();
while(ch>'9'||ch<'0'){
if(ch=='-')w=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9'){
s=(s<<3)+(s<<1)+ch-'0';
ch=getchar();
}
return s*w;
}
int t,cnt;
int sum[1005],tim[1005];
int dp[1005][1006];
int ls[5005],rs[5005],tot=1;
void get(int x){
tim[x]=read(),sum[x]=read();
tim[x]<<=1;
if(sum[x]==0){
ls[x]=++tot;
rs[x]=++tot;
get(ls[x]);
get(rs[x]);
}
}
void dfs(int x,int cost){
if(dp[x][cost]||!cost)return;
if(!sum[x]){
for(int i=0;i<=cost-tim[x];i++){
dfs(ls[x],i);
dfs(rs[x],cost-tim[x]-i);
dp[x][cost]=max(dp[x][cost],dp[ls[x]][i]+dp[rs[x]][cost-tim[x]-i]);
}
}
else{
dp[x][cost]=min(sum[x],(cost-tim[x])/5);
return ;
}
}
int main(){
t=read();
t--;
get(1);
dfs(1,t);
cout<<dp[1][t];
}