#include<stdio.h> #include<algorithm> using namespace std; #define N 110 long long v1[N],v2[N],v3[N],v4[N]; int cmp(int a,int b) { return a>b; } long long MAX(long long a,long long b) { if( a > b) return a; return b; } int main() { int t; int W,n; int w,w1,v; int a,b,c,d; int i,j,k,l; long long sum, ans; scanf("%d",&t); while(t --) { scanf("%d%d",&n,&W); a = b = c = d = 0; sum = 0; ans = 0; v1[a] = v2[b] = v3[c] = v4[d] = 0; scanf("%d%d",&w1,&v1[++a]); for(i = 2; i <= n; i ++) { scanf("%d%d",&w,&v); if(w == w1) v1[++a] = v; else if(w == w1+1) v2[++b] = v; else if(w == w1+2) v3[++c] = v; else if(w == w1+3) v4[++d] = v; } sort(v1+1,v1+a+1,cmp); sort(v2+1,v2+b+1,cmp); sort(v3+1,v3+c+1,cmp); sort(v4+1,v4+1+d,cmp); for(i = 2; i <= a; i ++) v1[i] += v1[i-1]; for(i = 2; i <= b; i ++) v2[i] += v2[i-1]; for(i = 2; i <= c; i ++) v3[i] += v3[i-1]; for(i = 2; i <= d; i ++) v4[i] += v4[i-1]; for(i = 0; i <=a; i ++) for(j = 0; j <= b; j ++) for(k = 0; k <= c; k ++) for(l = 0; l <= d; l ++) { sum = i*w1+j*(w1+1)+k*(w1+2)+l*(w1+3); if(sum <= W) { ans = MAX(ans,v1[i]+v2[j]+v3[k]+v4[l]); } } printf("%d\n",ans); } }