#include <bits/stdc++.h>
using namespace std;
#define read(type) readInt<type>() // Fast read
#define ll long long
#define nL "\n"
#define pb push_back
#define mk make_pair
#define pii pair<int, int>
#define a first
#define b second
#define vi vector<int>
#define all(x) (x).begin(), (x).end()
#define umap unordered_map
#define uset unordered_set
#define MOD 1000000007
#define imax INT_MAX
#define imin INT_MIN
#define exp 1e9
#define sz(x) (int((x).size()))
void solve() {
int n; cin >> n;
map<ll,ll> d;
for(auto i = 0; i < n; i++) {
ll o; cin >> o;
if (d.find(o) != d.end()) {
d[o]++;
} else {d[o] = 1;}
}
int ans = 1;
cout << "Entering" << endl;
pair<ll,ll> cur = *d.begin();
d[cur.a]--;
if (d[cur.a] <= 0) {d.erase(cur.a);}
while((int)d.size() != 0) {
if (d.find(cur.a+1) != d.end()) {
cur = *d.find(cur.a+1);
d[cur.a-1]--;
if (d[cur.a-1] <= 0) {d.erase(cur.a-1);}
} else {
ans++;
d[cur.a]--;
if (d[cur.a] <= 0) {d.erase(cur.a);}
cur = *d.begin();
}
}
cout << ans << endl;
}
int32_t main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int t; cin >> t;
while (t--) {
solve();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgcmVhZCh0eXBlKSByZWFkSW50PHR5cGU+KCkgLy8gRmFzdCByZWFkCiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgbkwgIlxuIgojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIG1rIG1ha2VfcGFpcgojZGVmaW5lIHBpaSBwYWlyPGludCwgaW50PgojZGVmaW5lIGEgZmlyc3QKI2RlZmluZSBiIHNlY29uZAojZGVmaW5lIHZpIHZlY3RvcjxpbnQ+CiNkZWZpbmUgYWxsKHgpICh4KS5iZWdpbigpLCAoeCkuZW5kKCkKI2RlZmluZSB1bWFwIHVub3JkZXJlZF9tYXAKI2RlZmluZSB1c2V0IHVub3JkZXJlZF9zZXQKI2RlZmluZSBNT0QgMTAwMDAwMDAwNwojZGVmaW5lIGltYXggSU5UX01BWAojZGVmaW5lIGltaW4gSU5UX01JTgojZGVmaW5lIGV4cCAxZTkKI2RlZmluZSBzeih4KSAoaW50KCh4KS5zaXplKCkpKQoKCnZvaWQgc29sdmUoKSB7CiAgICBpbnQgbjsgY2luID4+IG47CiAgICBtYXA8bGwsbGw+IGQ7IAogICAgCiAgICBmb3IoYXV0byBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIGxsIG87IGNpbiA+PiBvOwogICAgICAgIGlmIChkLmZpbmQobykgIT0gZC5lbmQoKSkgewogICAgICAgICAgICBkW29dKys7CiAgICAgICAgfSBlbHNlIHtkW29dID0gMTt9CiAgICB9CgogICAgaW50IGFucyA9IDE7CiAgICBjb3V0IDw8ICJFbnRlcmluZyIgPDwgZW5kbDsKICAgIAoKICAgIHBhaXI8bGwsbGw+IGN1ciA9ICpkLmJlZ2luKCk7CiAgICBkW2N1ci5hXS0tOwogICAgaWYgKGRbY3VyLmFdIDw9IDApIHtkLmVyYXNlKGN1ci5hKTt9CgogICAgd2hpbGUoKGludClkLnNpemUoKSAhPSAwKSB7CiAgICAgICAgaWYgKGQuZmluZChjdXIuYSsxKSAhPSBkLmVuZCgpKSB7CiAgICAgICAgICAgIGN1ciA9ICpkLmZpbmQoY3VyLmErMSk7CgogICAgICAgICAgICBkW2N1ci5hLTFdLS07CiAgICAgICAgICAgIGlmIChkW2N1ci5hLTFdIDw9IDApIHtkLmVyYXNlKGN1ci5hLTEpO30KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBhbnMrKzsKICAgICAgICAgICAgZFtjdXIuYV0tLTsKICAgICAgICAgICAgaWYgKGRbY3VyLmFdIDw9IDApIHtkLmVyYXNlKGN1ci5hKTt9CgogICAgICAgICAgICBjdXIgPSAqZC5iZWdpbigpOwogICAgICAgIH0KICAgIH0KCiAgICBjb3V0IDw8IGFucyA8PCBlbmRsOwoKfQogCiAKIAppbnQzMl90IG1haW4oKQp7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUoTlVMTCk7CiAgICBpbnQgdDsgY2luID4+IHQ7CiAgICB3aGlsZSAodC0tKSB7CiAgICAgICAgc29sdmUoKTsKICAgIH0KICAgIHJldHVybiAwOwp9
MTAKNgoyIDIgMyA0IDMgMQo1CjExIDggNyAxMCA5CjYKMTAwMDAwMDAwMCAxMDAwMDAwMDAwIDEwMDAwMDAwMDAgMTAwMDAwMDAwMCAxMDAwMDAwMDAwIDEwMDAwMDAwMDAKOAoxIDEgNCA0IDIgMyAyIDMKNgoxIDIgMyAyIDMgNAo3CjEwIDExIDExIDEyIDEyIDEzIDEzCjcKOCA4IDkgOSAxMCAxMCAxMQo4CjQgMTQgNSAxNSA2IDE2IDcgMTcKOAo1IDE1IDYgMTQgOCAxMiA5IDExCjUKNCAyIDIgMyA0Cg==
10
6
2 2 3 4 3 1
5
11 8 7 10 9
6
1000000000 1000000000 1000000000 1000000000 1000000000 1000000000
8
1 1 4 4 2 3 2 3
6
1 2 3 2 3 4
7
10 11 11 12 12 13 13
7
8 8 9 9 10 10 11
8
4 14 5 15 6 16 7 17
8
5 15 6 14 8 12 9 11
5
4 2 2 3 4