N=gets.to_i a=[] b=[] N.times{|i| a[i],b[i]=gets.split.map &:to_i } s=0 b.map{|b|s+=b} d=[0]*(s+1) N.times{|i| (d.size-1).downto(a[i]){|j| d[j]=[d[j],d[j-a[i]]+b[i]].max } } z=10**9 d.size.times{|i| z=[z,[i,s-d[i]].max].min } p z