#include <bits/stdc++.h>   using namespace std;   const int N = int(2e5) + 99;   const int INF = int(1e9) + 100;   int t;   int n;   long long s;   pair<int, int> p[N];   bool ok(int mid) {     long long sum = 0;     int cnt = 0;     vector<int> v;     for (int i = 0; i < n; ++i) {       if (p[i].second < mid)         sum += p[i].first;       else if (p[i].first >= mid) {         sum += p[i].first;         ++cnt;       } else         v.push_back(p[i].first);     }     assert(is_sorted(v.begin(), v.end()));     int need = max(0, (n + 1) / 2 - cnt);     if (need > v.size()) return false;     for (int i = 0; i < v.size(); ++i) {       if (i < v.size() - need)         sum += v[i];       else         sum += mid;     }     return sum <= s;   }   int main() {     scanf( %d , &t);     for (int tc = 0; tc < t; ++tc) {       scanf( %d %lld , &n, &s);       for (int i = 0; i < n; ++i) scanf( %d %d , &p[i].first, &p[i].second);       sort(p, p + n);       int lf = 1, rg = INF;       while (rg - lf > 1) {         int mid = (lf + rg) / 2;         if (ok(mid))           lf = mid;         else           rg = mid;       }       printf( %d n , lf);     }     return 0;   }   