#include<iostream>
#include<cstring>
using namespace std;
const int INF=0x3f3f3f3f;
int t,e,f,n,dp[10010];
struct node {
int p, w; //价值 重量
} no[10000];
int main() {
cin >> t;
while(t--) {
memset(dp,0x3f,sizeof dp);
//e是空存钱罐的重量,f是满存钱罐的重量,n是钱的种数。
cin>>e>>f>>n;
for(int i = 0; i < n; i++)
cin>>no[i].p>>no[i].w;
dp[0]=0;
for(int i=0;i<n;i++)
for(int j=no[i].w;j<=f-e;j++)
dp[j]=min(dp[j],dp[j-no[i].w]+no[i].p);
if(dp[f - e]!=INF)
cout << "The minimum amount of money in the piggy-bank is " << dp[f - e] << "." << endl;
else
cout << "This is impossible." << endl;
}
return 0;
}