#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define fori(a, b) for (int i = a; i < b; i++) #define forj(a, b) for (int j = a; j < b; j++) #define print(a) cout << a << " "; #define ll long long #define vi vector #define vb vector #define vll vector #define vvi vector> #define vvl vector> #define pii pair #define all(a) a.begin(), a.end() #define PB(n) push_back(n); #define F first #define S second #define nl cout << endl; #define yesno(b) cout << ((b) ? "YES" : "NO") using namespace std; const ll MOD = 1e9 + 7; const ll INF = LLONG_MAX; ll power(ll a, ll b, ll mod = MOD) { ll res = 1; while(b > 0) { if(b & 1) res = (res * a) % mod; a = (a * a) % mod; b >>= 1; } return res; } vb is_prime; void seive(int n) { is_prime.assign(n + 1, true); is_prime[0] = is_prime[1] = false; for (int i = 2; i * i <= n; ++i) { if (is_prime[i]) { for (int j = i * i; j <= n; j += i) is_prime[j] = false; } } } bool isPrime(ll n){ if(n < 2) return false; if(n == 2 || n == 3) return true; if(n % 2 == 0 || n % 3 == 0) return false; for(ll i = 5 ; i*i<=n ; i++){ if(n % i == 0 || n % (i+2) == 0){ return false; } } return true; } ll gcdll(ll a, ll b) { return b == 0 ? a : gcdll(b, a % b); } ll lcmll(ll a, ll b) { return (a / gcdll(a, b)) * b; } void solve() { ll t; cin >> t; while(t--){ int n; cin >> n; vll v(n); fori(0,n) cin >> v[i]; ll w = 0; for (int i = 0; i + 1 < n; i++) { if (v[i] >= v[i+1]) { w = max(w, v[i] - v[i+1] + 1); } } if (w <= n) cout << w << "\n"; else cout << -1 << "\n"; } } /* C AB */ signed main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); solve(); return 0; }