#include <cstdio> #include <iostream> #include <string> #include <cstring> #include <algorithm> #include <cmath> #define PI acos(-1.0) #define ms(a) memset(a,0,sizeof(a)) #define msp memset(mp,0,sizeof(mp)) #define msv memset(vis,0,sizeof(vis)) #define msd memset(dp,0,sizeof(dp)) using namespace std; #define LOCAL double dp[10010]; struct Node { int vo;//钱 double va;//[逃跑]概率 }v[10010]; int main() { #ifdef LOCAL freopen("in.txt", "r", stdin); //freopen("out.txt","w",stdout); #endif // LOCAL //ios::sync_with_stdio(false); int N; cin>>N; while(N--) { double p; int n,sum=0;//sum是钱的总数,即背包容量 msd,dp[0]=1;//什么都不抢,逃跑率100% scanf("%lf%d",&p,&n); for(int i=1;i<=n;i++) {scanf("%d%lf",&v[i].vo,&v[i].va),v[i].va=1-v[i].va; sum+=v[i].vo;} for(int i=1;i<=n;i++) for(int j=sum;j>=0;j--) dp[j]=max(dp[j],dp[j-v[i].vo]*v[i].va); for(int i=sum;i>=0;i--) { if(dp[i]>1-p) { printf("%d\n",i); break; } } } return 0; }