完全背包
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn = 10000 + 22;
const int inf = 0x3f3f3f3f;
int p[maxn], w[maxn];
int dp[maxn];
int main() {
int T;
cin >> T;
while (T--) {
memset( dp, 0, sizeof(dp) );
int E, F;
cin >> E >> F;
int maxW = F - E;
for(int j=0; j<=maxW; ++j) {
dp[j] = inf;
}
dp[0] = 0;
int N;
cin >> N;
for (int i = 0; i < N; ++i) {
cin >> p[i] >> w[i];
}
for (int i = 0; i < N; ++i) {
for (int j = w[i]; j <= maxW; ++j) {
if( dp[j-w[i]] != inf && j-w[i]>=0 ) {
dp[j] = min( dp[j], dp[j-w[i]]+p[i] );
}
}
}
if( dp[maxW] == inf ) {
cout << "This is impossible." << endl;
}
else {
cout << "The minimum amount of money in the piggy-bank is "
<< dp[maxW] << '.' << endl;
}
}
return 0;
}