/*
不优化会超时~,OMG。。。
*/
#include <stdio.h>
#include <string.h>
#define N 105
#define M 105
#define L 1005
int max(int a, int b){ return a > b ? a : b; }
int f[M][L];
int main()
{
int t, n, m, l, w, v, ans;
int i, j, k;
scanf("%d", &t);
while(t--){
memset(f, 0, sizeof(f));
ans = 0;
scanf("%d%d%d", &n, &m, &l);
for(i=1; i<=n; i++)
{
scanf("%d%d", &w, &v);
for(j=m; j>=2; j--)
for(k=l; k>=w; k--)
if(f[j-1][k-w]) //因为题目的特殊要求,需要这么处理。必须选择M部
f[j][k] = max(f[j-1][k-w]+v, f[j][k]);
f[1][w] = v;
}
for(j=0; j<=l ;j++)
ans = max(ans, f[m][j]);
printf("%d\n", ans);
}
return 0;
}