#include <bits/stdc++.h>
using namespace std;
const int M = 262144 + 5;
int A[M];
pair<int, int> check(int l, int r) {
if (l + 1 == r) {
if (A[r] % 2 == 0) {
if (A[l] + 1 == A[r]) return {0, A[r]};
} else {
if (A[l] - 1 == A[r]) return {1, A[l]};
}
return {-1, -1};
}
int mid = l + (r - l) / 2;
pair<int, int> a = check(l, mid);
pair<int, int> b = check(mid + 1, r);
if (a.first == -1 || b.first == -1) return {-1, -1};
int c = min(a.second, b.second);
int d = max(a.second, b.second);
int sz = r - l + 1;
if (c != d - sz / 2) return {-1, -1};
return {a.first + b.first + (a.second > b.second), max(a.second, b.second)};
}
void solve() {
int m;
cin >> m;
for (int i = 0; i < m; i++) cin >> A[i];
if (m == 1) cout << 0 << endl;
else cout << check(0, m - 1).first << endl;
}
int main() {
int t;
cin >> t;
while (t--) solve();
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBpbnQgTSA9IDI2MjE0NCArIDU7CmludCBBW01dOwoKcGFpcjxpbnQsIGludD4gY2hlY2soaW50IGwsIGludCByKSB7CglpZiAobCArIDEgPT0gcikgewoJCWlmIChBW3JdICUgMiA9PSAwKSB7CgkJCWlmIChBW2xdICsgMSA9PSBBW3JdKSByZXR1cm4gezAsIEFbcl19OwoJCX0gZWxzZSB7CgkJCWlmIChBW2xdIC0gMSA9PSBBW3JdKSByZXR1cm4gezEsIEFbbF19OwoJCX0KCQlyZXR1cm4gey0xLCAtMX07Cgl9CglpbnQgbWlkID0gbCArIChyIC0gbCkgLyAyOwoJcGFpcjxpbnQsIGludD4gYSA9IGNoZWNrKGwsIG1pZCk7CglwYWlyPGludCwgaW50PiBiID0gY2hlY2sobWlkICsgMSwgcik7CglpZiAoYS5maXJzdCA9PSAtMSB8fCBiLmZpcnN0ID09IC0xKSByZXR1cm4gey0xLCAtMX07CglpbnQgYyA9IG1pbihhLnNlY29uZCwgYi5zZWNvbmQpOwoJaW50IGQgPSBtYXgoYS5zZWNvbmQsIGIuc2Vjb25kKTsKCQoJaW50IHN6ID0gciAtIGwgKyAxOwoJaWYgKGMgIT0gZCAtIHN6IC8gMikgcmV0dXJuIHstMSwgLTF9OwoJCgkKCXJldHVybiB7YS5maXJzdCArIGIuZmlyc3QgKyAoYS5zZWNvbmQgPiBiLnNlY29uZCksIG1heChhLnNlY29uZCwgYi5zZWNvbmQpfTsKfQoKdm9pZCBzb2x2ZSgpIHsKCWludCBtOwoJY2luID4+IG07Cglmb3IgKGludCBpID0gMDsgaSA8IG07IGkrKykgY2luID4+IEFbaV07CglpZiAobSA9PSAxKSBjb3V0IDw8IDAgPDwgZW5kbDsKCWVsc2UgY291dCA8PCBjaGVjaygwLCBtIC0gMSkuZmlyc3QgPDwgZW5kbDsKfQoKaW50IG1haW4oKSB7CglpbnQgdDsKCWNpbiA+PiB0OwoJd2hpbGUgKHQtLSkgc29sdmUoKTsKfQ==