/* * @Author: hesorchen * @Date: 2020-07-03 17:05:01 * @LastEditTime: 2020-07-26 15:06:37 * @Description: https://hesorchen.github.io/ */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define endl '\n' #define PI acos(-1) #define PB push_back #define ll long long #define INF 0x3f3f3f3f #define mod 1000000007 #define pll pair #define lowbit(abcd) (abcd & (-abcd)) #define max(a, b) ((a > b) ? (a) : (b)) #define min(a, b) ((a < b) ? (a) : (b)) #define IOS \ ios::sync_with_stdio(false); \ cin.tie(0); \ cout.tie(0); #define FRE \ { \ freopen("in.txt", "r", stdin); \ freopen("out.txt", "w", stdout); \ } inline ll read() { ll x = 0, f = 1; char ch = getchar(); while (ch < '0' || ch > '9') { if (ch == '-') f = -1; ch = getchar(); } while (ch >= '0' && ch <= '9') { x = (x << 1) + (x << 3) + (ch ^ 48); ch = getchar(); } return x * f; } //head============================================================================== ll f(ll n) { if (n == 1 || n == 0) return 0; return (n - 1) + (n - 2) + f(n - 2); } // int tong[2][100010]; map mp1; map mp2; int a1[100010]; int a2[100010]; int main() { IOS; ll t; cin >> t; while (t--) { mp1.clear(), mp2.clear(); fill(a1, a1 + 100010, 0); fill(a2, a2 + 100010, 0); ll n; cin >> n; ll ans = 0; for (int i = 1; i <= n; i++) { cin >> a1[i] >> a2[i]; if (a1[i] == 1) mp1[a2[i]] = 1; else mp2[a2[i]] = 1; } for (int i = 1; i <= n; i++) { if (a1[i] == 1) ans = max(ans, a2[i] + 1); else { // cout << '\t' << a2[i] << endl; // cout << mp1[a2[i] + 1] << endl; if (mp1[a2[i] + 1]) { // cout << 22222 << endl; ans = max(ans, a2[i] + 3); } else ans = max(ans, a2[i] + 2); } } cout << ans << endl; } return 0; } /* */