/*
极差是 两个数的最大值
1.>>>>> <><><><> <<<<<< / <<<<<<< <><><><><> >>>>>> 2*(max(L1,L2)-com_lenth)
2.>>>> <><><> >>>>>> 2*|L1-L2|
3.>>>>>>>> <<<<<<<<< 2*|L1-L2|
只有三种情况
O(n^2) 对于每一个 区间 枚举n个 按照三种情况判断 取最大值
显然超出范围 n,m<=1e5 T<=1e4
考虑 O(n) 或者 O(n*logn)
优化:
1/贪心:
(1)对于每一个区间 从前往后扫 只要 com_length 尽量小就可以了 ->maxl +minr
(2) |L1-L2| 记录最小值即可 -> minlen
因为有可能不重叠 所以 max( ,0)
ans = max(ans, a[i].r - a[i].l + 1 -
min(max(a[i].r - maxl + 1, 0), min(max(minr - a[i].l + 1, 0), minlen)));
*/
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<string.h>
//#include<queue>
//#include<vector>
//#include<bits/stdc++.h>
#define ll long long
#define ddd printf("-----------------------\n");
using namespace std;
typedef pair<int,int> pii;
const int N = 114514;
#define l first
#define r second
pii a[N];
int main()
{
int T, n, m;
cin >> T;
while(T--){
cin >> n >> m;
for(int i = 1; i <= n; i++)
cin >> a[i].l >> a[i].r;
int maxl = 0, minr = 2e9, minlen = 2e9;
for(int i = 1; i <= n; i++)
maxl = max(maxl, a[i].l), minr = min(minr, a[i].r),
minlen = min(minlen, a[i].r - a[i].l + 1);
int ans = 0;
for(int i = 1; i <= n; i++)
ans = max(ans, a[i].r - a[i].l + 1 -
min(max(a[i].r - maxl + 1, 0), min(max(minr - a[i].l + 1, 0), minlen)));
cout << ans * 2 << endl;
}
return 0;
}