using System; using static System.Console; using System.Linq; using System.Collections.Generic; class Program { static int NN => int.Parse(ReadLine()); static int[] NList => ReadLine().Split().Select(int.Parse).ToArray(); static int[][] NArr(long n) => Enumerable.Repeat(0, (int)n).Select(_ => NList).ToArray(); public static void Main() { Solve(); } static void Solve() { var d = NList; var (n, v, c) = (d[0], d[1], d[2]); var map = NArr(n); var dp = Enumerable.Repeat(long.MinValue, v + 1).ToArray(); dp[0] = 0; for (var i = 0; i < n; ++i) { var ndp = (long[]) dp.Clone(); for (var j = 0; j < v; ++j) if (j + map[i][0] <= v) ndp[j + map[i][0]] = Math.Max(ndp[j + map[i][0]], dp[j] + map[i][1] + c); dp = ndp; } for (var i = 0; i < n; ++i) { for (var j = 0; j < v; ++j) if (j + map[i][0] <= v) dp[j + map[i][0]] = Math.Max(dp[j + map[i][0]], dp[j] + map[i][1]); } WriteLine(dp.Max()); } }