HDU 1114
#include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
struct fly
{
int p;
int w;
}z[10010];
int dp[10010];
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int e,f;
scanf("%d%d",&e,&f);
int n,i,j;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d%d",&z[i].p,&z[i].w);
for(i=0;i<=f-e;i++)
dp[i]=1000000;
dp[0]=0;
for(i=0;i<n;i++)
for(j=z[i].w;j<=f-e;j++)
dp[j]=min(dp[j],dp[j-z[i].w]+z[i].p);
if(dp[f-e]==1000000)
printf("This is impossible.\n");
else
printf("The minimum amount of money in the piggy-bank is %d.\n",dp[f-e]);
}
return 0;
}