void main(){ import std.stdio, std.string, std.conv, std.algorithm; import std.range; int n; rd(n); auto v=new int[](n), w=new int[](n); foreach(i; 0..n) rd(v[i], w[i]); int vmax; rd(vmax); auto rec=new int[](100002); const inf=1000000; fill(rec, inf); rec[0]=0; foreach(i; 0..n)for(int j=100001; j>=0; j--){ if(j>0) chmin(rec[j-1], rec[j]); if(j+v[i]<=100001) chmin(rec[j+v[i]], rec[j]+w[i]); } assert(rec[vmax]y) x=y; } void rd(T...)(ref T x){ import std.stdio, std.string, std.conv; auto l=readln.split; assert(l.length==x.length); foreach(i, ref e; x){ e=l[i].to!(typeof(e)); } }