#include #include #include using namespace std; using namespace __gnu_pbds; const int N = 5e5 + 5; int t; int n , k; pair < int , int > arr[N]; typedef tree < pair < int , int > , null_type , less < pair < int , int > > , rb_tree_tag , tree_order_statistics_node_update > ordered_set; ordered_set shit; int ans; int main( ){ scanf("%d" , &t); while(t--){ scanf("%d %d" , &n , &k); for(int i = 1 ; i <= n ; ++i){ scanf("%d %d" , &arr[i].second , &arr[i].first); } sort(arr + 1 , arr + 1 + n); shit.clear(); ans = 0; for(int i = n ; i >= 1 ; --i){ int j = i; shit.insert(make_pair(arr[i].second , i)); while(j > 1 && arr[j - 1].first == arr[j].first){ --j; shit.insert(make_pair(arr[j].second , j)); } if(shit.size() >= k){ ans = max(ans , arr[i].first - shit.find_by_order(k - 1) -> first); } i = j; } printf("%d\n" , ans); } }