ts=int(input())
while ts>0:
ts-=1
m,x=map(int,input().split())
cost=[0]*m
happy=[0]*m
for i in range(m):
cost[i],happy[i]=map(int,input().split())
total=sum(happy)
dp=[1000000000000]*(total+5)
dp[0],ans=0,0
for i in range(m):
for j in range(total,happy[i]-1,-1):
if dp[j-happy[i]]+cost[i]<=i*x:
dp[j]=min(dp[j],dp[j-happy[i]]+cost[i])
for i in range(total,0,-1):
if dp[i]<1000000000000:
ans=i
break
print(ans)
1041A - Heist | 901A - Hashing Trees |
1283A - Minutes Before the New Year | 1654D - Potion Brewing Class |
1107B - Digital root | 25A - IQ test |
785A - Anton and Polyhedrons | 1542B - Plus and Multiply |
306A - Candies | 1651C - Fault-tolerant Network |
870A - Search for Pretty Integers | 1174A - Ehab Fails to Be Thanos |
1169A - Circle Metro | 780C - Andryusha and Colored Balloons |
1153A - Serval and Bus | 1487C - Minimum Ties |
1136A - Nastya Is Reading a Book | 1353B - Two Arrays And Swaps |
1490E - Accidental Victory | 1335A - Candies and Two Sisters |
96B - Lucky Numbers (easy) | 1151B - Dima and a Bad XOR |
1435B - A New Technique | 1633A - Div 7 |
268A - Games | 1062B - Math |
1294C - Product of Three Numbers | 749A - Bachgold Problem |
1486B - Eastern Exhibition | 1363A - Odd Selection |