import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int t = Integer.parseInt(br.readLine());
while (t-- > 0) {
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int P = Integer.parseInt(st.nextToken()); // 总强度 及格线
int Q = Integer.parseInt(st.nextToken()); // 总花费 背包容量
int[] p = new int[n + 1]; // 强度
int[] c = new int[n + 1]; // 花费
for (int i = 1; i <= n; i++) {
st = new StringTokenizer(br.readLine());
p[i] = Integer.parseInt(st.nextToken());
c[i] = Integer.parseInt(st.nextToken());
}
int[] dp = new int[Q + 1];
for (int i = 1; i <= n; i++) {
for (int j = Q; j >= c[i]; j--) {
dp[j] = Math.max(dp[j], dp[j - c[i]] + p[i]); // 01背包先算出每个状态能达到的最高总强度
}
}
int ans = -1;
for (int i = 1; i <= Q; i++) {
if (dp[i] >= P) {
ans = i;
break;
}
}
bw.write(ans + "\n");
}
bw.flush();
}
}
每日一水~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~