// #pragma GCC optimize ("Ofast") // #pragma GCC optimize ("unroll-loops") // #pragma GCC target ("avx,avx2,fma") #include using std::cin, std::cout, std::cerr; using ll = long long; int main() { std::ios::sync_with_stdio(false); int n, v, c; cin >> n >> v >> c; std::vector f(v + 1); auto upd = [](int &a, int b) { if(a < b) a = b; }; while(n --) { int a, b; cin >> a >> b; std::vector g(v + 1); for(int i = 1; i <= v; i ++) { g[i] = f[i]; if(i >= a) upd(g[i], f[i - a] + b + c); } for(int i = 1; i <= v; i ++) { upd(g[i], g[i - 1]); if(i >= a) upd(g[i], g[i - a] + b); } f = g; } cout << f[v] << '\n'; }