#include using namespace std; int main(){ ios::sync_with_stdio(false),cin.tie(0); int t; cin >> t; while(t--) []{ int n; cin >> n; vector A(n); for (int& a:A) cin >> a; auto f = [](long long x) -> int { return (x?64-__builtin_clzll(x)-__builtin_popcountll(x):1); }; cout << [&f](this auto self,vector& A) -> long long { if (*min_element(A.begin(),A.end())<0) return -1; int n = A.size(); if (n==1) return (A[0]!=1?1ll<A[1]+1) return -1; if (A[0]==0) return (A[1]?(1ll< B; for (int i(0);i < n;i+=2) if (i+1==n||A[i+1]==A[i]-1) B.emplace_back(A[i]-1); if (B.size()==(n+1)/2){ long long res = self(B); if (res>0) return 2*res; if (res==0&&n<=4) return 4; } B.clear(); B.emplace_back(A[0]); for (int i(1);i < n;i+=2) if (i+1==n||A[i+1]==A[i]-1) B.emplace_back(A[i]-1); if (B.size()==n/2+1){ long long res = self(B); if (res>0) return 2*res+1; if (res==0&&n==3) return 5; } return -1; }(A) << '\n'; }(); }