// Author: Ankush Khanna
#include <iostream>
#include <vector>
#include <algorithm>
#include <cassert>
using namespace std;
inline int lis(int *a, int n) {
vector<int> ans;
for (int i = 0; i < n; i++) {
auto it = lower_bound(ans.begin(), ans.end(), a[i]);
if (it == ans.end()) {
ans.push_back(a[i]);
} else {
*it = a[i];
}
}
return (int) ans.size();
}
int main() {
ios_base :: sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int tt, a[100000];
cin >> tt;
assert(tt >= 1 && tt <= 10);
while (tt--) {
int n;
cin >> n;
assert(n >= 1 && n <= 100000);
for (int i = 0; i < n; i++) {
cin >> a[i];
assert(a[i] >= 1 && a[i] <= 1000000000);
}
cout << lis(a, n) << '\n';
}
return 0;
}
Ly8gQXV0aG9yOiBBbmt1c2ggS2hhbm5hCiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGNhc3NlcnQ+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW5saW5lIGludCBsaXMoaW50ICphLCBpbnQgbikgewogICAgdmVjdG9yPGludD4gYW5zOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICBhdXRvIGl0ID0gbG93ZXJfYm91bmQoYW5zLmJlZ2luKCksIGFucy5lbmQoKSwgYVtpXSk7CiAgICAgICAgaWYgKGl0ID09IGFucy5lbmQoKSkgewogICAgICAgICAgICBhbnMucHVzaF9iYWNrKGFbaV0pOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICppdCA9IGFbaV07CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIChpbnQpIGFucy5zaXplKCk7Cn0KCmludCBtYWluKCkgewogICAgaW9zX2Jhc2UgOjogc3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUobnVsbHB0cik7CiAgICBjb3V0LnRpZShudWxscHRyKTsKICAgIGludCB0dCwgYVsxMDAwMDBdOwogICAgY2luID4+IHR0OwogICAgYXNzZXJ0KHR0ID49IDEgJiYgdHQgPD0gMTApOwogICAgd2hpbGUgKHR0LS0pIHsKICAgICAgICBpbnQgbjsKICAgICAgICBjaW4gPj4gbjsKICAgICAgICBhc3NlcnQobiA+PSAxICYmIG4gPD0gMTAwMDAwKTsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgICAgICBjaW4gPj4gYVtpXTsKICAgICAgICAgICAgYXNzZXJ0KGFbaV0gPj0gMSAmJiBhW2ldIDw9IDEwMDAwMDAwMDApOwogICAgICAgIH0KICAgICAgICBjb3V0IDw8IGxpcyhhLCBuKSA8PCAnXG4nOwogICAgfQogICAgcmV0dXJuIDA7Cn0K