#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
// 定义一个区间结构体
struct Interval {
int L, R;
};
// 比较函数,用于排序区间
bool compareInterval(const Interval &a, const Interval &b) {
return a.L < b.L;
}
int main() {
int T;
cin >> T;
vector<int> results;
for (int t = 0; t < T; ++t) {
int n;
cin >> n;
vector<Interval> intervals(n);
for (int i = 0; i < n; ++i) {
cin >> intervals[i].L >> intervals[i].R;
}
// 如果区间数量少于2个,无法选择两个不重叠的区间
if (n < 2) {
results.push_back(-1);
continue;
}
// 对区间按起始点进行排序
sort(intervals.begin(), intervals.end(), compareInterval);
int max_length = -1;
// 使用双重循环检查所有可能的区间组合
for (int i = 0; i < n; ++i) {
for (int j = i + 1; j < n; ++j) {
// 如果两个区间不重叠
if (intervals[i].R < intervals[j].L || intervals[j].R < intervals[i].L) {
int length = (intervals[i].R - intervals[i].L + 1) + (intervals[j].R - intervals[j].L + 1);
if (length > max_length) {
max_length = length;
}
}
}
}
results.push_back(max_length);
}
// 输出所有测试用例的结果
for (const int &result : results) {
cout << result << endl;
}
return 0;
}