#include<bits/stdc++.h>
using namespace std ;
using ll = long long ;
ll min_start_val, gap ;
ll a[100005], n ;
void bs(){
ll mx = 0 ;
for(int i = 0 ; i < n ; i++) mx = max(a[i], mx) ;
ll lo = 0, hi = mx ;
while(hi-lo > 1){
ll mid = (hi + lo) >> 1 ;
bool flag = 1 ;
ll req = 1 ;
for(ll i = 0 ; i < n ; i++, req += mid)
if(a[i] < req){
flag = 0 ;
break ;
}
if(flag) lo = mid ;
else hi = mid ;
}
ll req = 1LL, mindiff = mx ;
for(ll i = 0 ; i < n ; i++, req += lo)
mindiff = min(mindiff, a[i] - req) ;
min_start_val = mindiff + 1 ;
gap = lo ;
}
void solve(){
cin >> n ;
for(int i = 0 ; i < n ; i++) cin >> a[i] ;
bs() ;
cout << gap << " " << min_start_val << "\n" ;
}
int main(){
#ifndef ONLINE_JUDGE
freopen("sample input.txt", "r", stdin) ;
freopen("output.txt", "w", stdout) ;
#endif
ios::sync_with_stdio(0) ; cin.tie(0) ; cout.tie(0) ;
int t ; cin >> t ;
while(t--) solve() ;
return 0 ;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQgOwp1c2luZyBsbCA9IGxvbmcgbG9uZyA7CgpsbCBtaW5fc3RhcnRfdmFsLCBnYXAgOwpsbCBhWzEwMDAwNV0sIG4gOwoKdm9pZCBicygpewoKCWxsIG14ID0gMCA7Cglmb3IoaW50IGkgPSAwIDsgaSA8IG4gOyBpKyspIG14ID0gbWF4KGFbaV0sIG14KSA7CgoJbGwgbG8gPSAwLCBoaSA9IG14IDsKCgl3aGlsZShoaS1sbyA+IDEpewoKCQlsbCBtaWQgPSAoaGkgKyBsbykgPj4gMSA7CgoJCWJvb2wgZmxhZyA9IDEgOwoJCWxsIHJlcSA9IDEgOwoJCWZvcihsbCBpID0gMCA7IGkgPCBuIDsgaSsrLCByZXEgKz0gbWlkKQoJCQlpZihhW2ldIDwgcmVxKXsKCQkJCWZsYWcgPSAwIDsKCQkJCWJyZWFrIDsKCQkJfQoKCQlpZihmbGFnKSBsbyA9IG1pZCA7CgkJZWxzZSBoaSA9IG1pZCA7CgoJfQoKCWxsIHJlcSA9IDFMTCwgbWluZGlmZiA9IG14IDsKCWZvcihsbCBpID0gMCA7IGkgPCBuIDsgaSsrLCByZXEgKz0gbG8pCgkJbWluZGlmZiA9IG1pbihtaW5kaWZmLCBhW2ldIC0gcmVxKSA7CgoJbWluX3N0YXJ0X3ZhbCA9IG1pbmRpZmYgKyAxIDsKCWdhcCA9IGxvIDsKCn0KCnZvaWQgc29sdmUoKXsKCgljaW4gPj4gbiA7Cglmb3IoaW50IGkgPSAwIDsgaSA8IG4gOyBpKyspIGNpbiA+PiBhW2ldIDsKCglicygpIDsKCgljb3V0IDw8IGdhcCA8PCAiICIgPDwgbWluX3N0YXJ0X3ZhbCA8PCAiXG4iIDsKCn0KCmludCBtYWluKCl7CgoJI2lmbmRlZiBPTkxJTkVfSlVER0UKCWZyZW9wZW4oInNhbXBsZSBpbnB1dC50eHQiLCAiciIsIHN0ZGluKSA7CglmcmVvcGVuKCJvdXRwdXQudHh0IiwgInciLCBzdGRvdXQpIDsKCSNlbmRpZgoKCWlvczo6c3luY193aXRoX3N0ZGlvKDApIDsgY2luLnRpZSgwKSA7IGNvdXQudGllKDApIDsKCglpbnQgdCA7IGNpbiA+PiB0IDsKCXdoaWxlKHQtLSkgc29sdmUoKSA7CgoJcmV0dXJuIDAgOwp9Cg==