#include <bits/stdc++.h>
using namespace std;
#define pii pair<int , int>
#define ll long long
#define mp make_pair
#define pb push_back
bool check(vector<int> &p, vector<int> &m, ll &total_cost, ll level){
ll total = 0;
for(int i = 0 ; i < p.size() ; i++){
ll diff = level - p[i];
if(diff > 0)
total += diff*(ll)m[i];
if(total > total_cost)
return false;
}
return true;
}
ll b_search(vector<int> &p, vector<int> &m , ll total_cost){
ll low = 0 , high = (LLONG_MAX/10), mid , ans = -1;
while(low < high){
mid = low + (high - low)/2;
if(check(p, m, total_cost , mid)){
low = mid+1;
ans = max(mid , ans);
} else high = mid;
}
return ans;
}
int main(){
int t;
scanf("%d",&t);
while(t--){
ll n , total_cost;
scanf("%lld%lld", &n , &total_cost);
vector<int> p(n) , m(n);
for(int i = 0 ; i < n ; i++){
scanf("%d%d" , &p[i] , &m[i]);
}
printf("%lld\n" , b_search(p , m , total_cost));
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgcGlpIHBhaXI8aW50ICwgaW50PgojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIG1wIG1ha2VfcGFpcgojZGVmaW5lIHBiIHB1c2hfYmFjawpib29sIGNoZWNrKHZlY3RvcjxpbnQ+ICZwLCB2ZWN0b3I8aW50PiAmbSwgbGwgJnRvdGFsX2Nvc3QsIGxsIGxldmVsKXsKICAgIGxsIHRvdGFsID0gMDsKICAgIGZvcihpbnQgaSA9IDAgOyBpIDwgcC5zaXplKCkgOyBpKyspewogICAgICAgIGxsIGRpZmYgPSBsZXZlbCAtIHBbaV07CiAgICAgICAgaWYoZGlmZiA+IDApCiAgICAgICAgICAgIHRvdGFsICs9IGRpZmYqKGxsKW1baV07CiAgICAgICAgaWYodG90YWwgPiB0b3RhbF9jb3N0KQogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICByZXR1cm4gdHJ1ZTsKfQpsbCBiX3NlYXJjaCh2ZWN0b3I8aW50PiAmcCwgdmVjdG9yPGludD4gJm0gLCBsbCB0b3RhbF9jb3N0KXsKICAgIGxsIGxvdyA9IDAgLCBoaWdoID0gKExMT05HX01BWC8xMCksIG1pZCAsIGFucyA9IC0xOwogICAgd2hpbGUobG93IDwgaGlnaCl7CiAgICAgICAgbWlkID0gbG93ICsgKGhpZ2ggLSBsb3cpLzI7CiAgICAgICAgaWYoY2hlY2socCwgbSwgdG90YWxfY29zdCAsIG1pZCkpewogICAgICAgICAgICBsb3cgPSBtaWQrMTsKICAgICAgICAgICAgYW5zID0gbWF4KG1pZCAsIGFucyk7CiAgICAgICAgfSBlbHNlIGhpZ2ggPSBtaWQ7CiAgICB9CiAgICByZXR1cm4gYW5zOwp9CmludCBtYWluKCl7CiAgICBpbnQgdDsKICAgIHNjYW5mKCIlZCIsJnQpOwogICAgd2hpbGUodC0tKXsKICAgICAgICBsbCBuICwgdG90YWxfY29zdDsKICAgICAgICBzY2FuZigiJWxsZCVsbGQiLCAmbiAsICZ0b3RhbF9jb3N0KTsKICAgICAgICB2ZWN0b3I8aW50PiBwKG4pICwgbShuKTsKICAgICAgICBmb3IoaW50IGkgPSAwIDsgaSA8IG4gOyBpKyspewogICAgICAgICAgICBzY2FuZigiJWQlZCIgLCAmcFtpXSAsICZtW2ldKTsKICAgICAgICB9CiAgICAgICAgcHJpbnRmKCIlbGxkXG4iICwgYl9zZWFyY2gocCAsIG0gLCB0b3RhbF9jb3N0KSk7CiAgICB9CiAgICByZXR1cm4gMDsKfQ==