#include #include #include #include using namespace std; const int INF=0x3f,maxn=101,maxb=1001; int T,n,b,s[maxn],c[maxn],dp[maxn][maxb],sum[maxn][maxb]; int main() { int Case=1; scanf("%d",&T); while(T--) { scanf("%d%d",&b,&n); for(int i=n;i>=1;--i)scanf("%d%d",&s[i],&c[i]); memset(dp,0,sizeof(dp)); /*for(int i=1;i<=n;++i) for(int j=1;j<=b;++j) sum[i][j]=INF;*/ memset(sum,INF,sizeof(sum)); for(int i=0;i<=n;++i)sum[i][0]=0; for(int i=0;i<=b;++i)sum[0][i]=0; for (int i = 1; i <= n; ++i) { for (int j = b; j >= 0; --j) { if(c[i]==0&&s[i]>0){dp[i][j]=dp[i-1][j]+s[i];sum[i][j]=sum[i-1][j]+(n+1-i);continue;} if(c[i]==0&&s[i]==0){dp[i][j]=dp[i-1][j];sum[i][j]=sum[i-1][j];continue;} if(jnot_buy){dp[i][j]=buy;sum[i][j]=buy_sum;} else { if(buy_sumans; for(int i=n;i>=1;--i) if(dp[i][bb]==dp[i-1][bb-c[i]]+s[i]&&sum[i][bb]==sum[i-1][bb-c[i]]+(n+1-i)) ans.push_back(n+1-i),cost+=c[i],bb-=c[i]; printf("%d %d\n",dp[n][b],cost); for(int i=0;i