#include<bits/stdc++.h> usingnamespacestd; #define ll long long #ifndef ONLINE_JUDGE #define dbg(x...) do{cout << "\033[33;1m" << #x << "->" ; err(x);} while (0) voiderr(){cout << "\033[39;0m" << endl;} template<template<typename...> classT, typenamet, typename... A> voiderr(T<t> a, A... x){for (auto v: a) cout << v << ' '; err(x...);} template<typename T, typename... A> voiderr(T a, A... x){cout << a << ' '; err(x...);} #else #define dbg(...) #endif #define inf 1ll << 50 constint N = 1e5 + 5;
vector<int> des; int t_sum[2 * N];
int st[N], ed[N]; int mac_st[N], mac_ed[N];
intget_id(int v) { return lower_bound(des.begin(), des.end(), v) - des.begin() + 1; } template<classT> voidread(T& ret) { ret = 0; char c; while ((c = getchar()) > '9' || c < '0'); while (c >= '0' && c <= '9') { ret = ret * 10 + c - '0'; c = getchar(); } } intmain() { int T; read(T); while (T--) { int n; read(n); des.clear(); for (int i = 1; i <= n; i++) { read(st[i]); read(ed[i]); des.push_back(st[i]); des.push_back(ed[i]); } sort(des.begin(), des.end()); des.erase(unique(des.begin(), des.end()), des.end()); for (int i = 1; i <= n; i++) { int p = get_id(st[i]); t_sum[p]++; p = get_id(ed[i]); t_sum[p]--; } int k = 0, cur = 0;; for (int i = 0; i <= des.size(); i++) { if (i > 0) t_sum[i] += t_sum[i - 1]; if (t_sum[i] > k) { while (k < t_sum[i]) mac_st[++k] = i; } } cur = 0; int kk = 0; for (int i = des.size(); i >= 0; i--) { while (kk < t_sum[i]) { mac_ed[++kk] = i + 1; } } ll ans = 0; for (int i = 1; i <= k; i++) ans += des[mac_ed[i] - 1] - des[mac_st[i] - 1]; printf("%d %lld\n", k, ans); for (int i = 0; i <= des.size() + 1; i++) t_sum[i] = 0; } return0; }