/*
题目:http://acm.hdu.edu.cn/showproblem.php?pid=2955
题意:Roy想要抢劫银行,每家银行多有一定的金额和被抓到的概率,知道Roy被抓的最
大概率P,求Roy在被抓的情况下,抢劫最多。
分析:考虑其反面。被抓概率可以转换成安全概率,Roy的安全概率大于1-P时都是安全的。抢劫的金
额为0时,肯定是安全的,所以d[0]=1;其他金额初始为最危险的所以概率全为0;
注意:不要误以为精度只有两位。
*/
#include<stdio.h>
#include<iostream>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<string>
#include<algorithm>
#pragma comment(linker, "/STACK:1024000000,1024000000")
using namespace std;
const int maxn = 105;
double dp[maxn*maxn];
int weight[maxn*maxn];
double p[maxn];
int main(){
int t;
scanf("%d",&t);
while(t--){
double m;
int n;
scanf("%lf%d",&m,&n);
m = 1-m;
int sum_w = 0;
for(int i = 0;i < n;i++){
scanf("%d%lf",weight+i,p+i);
p[i] = 1 - p[i];
sum_w += weight[i];
}
memset(dp, 0, sizeof(dp));
dp[0] = 1;
for(int i = 0;i < n;i++)
for(int j = sum_w;j >= weight[i];j--)
dp[j] = max(dp[j],dp[j-weight[i]]*p[i]);
for(int i = sum_w;i >= 0;i--)
if(dp[i] - m > 1e-8){
printf("%d\n",i);
break;
}
}
return 0;
}