#include<iostream>
#include<cmath> //abs (绝对值)的头文件
#include<vector> //vector容器(包含begin(),end(),empty,insert,clear.....)
#include<algorithm> //max,sort的头文件
using namespace std;int main()
{
int t,k,m,n;
int a[100005];
scanf("%d",&t);
while(t--) {
m=0;
vector<int>p; //创建动态容器p,其本质是数组。
p.clear(); //每次都要把它清空
scanf("%d",&n);
for(int i=1; i<=n; i++) {
scanf("%d",&a[i]);
}
for(int i=1; i<=n; i++) {
if(a[i]!=-1&&(a[i-1]==-1||a[i+1]==-1)) {
p.push_back(a[i]); //把所有本身不是-1,但左右含有-1的数全部插入p中(插入末尾)
}
}
sort(p.begin(),p.end()); //对p中数字排序
if(p.empty())k=0; //如果p为空,则全是-1(empty空返回1,有返回0)
else{
k=(p[0]+p[p.size()-1])/2;
}
for(int i=1;i<=n;i++){
if(a[i]==-1)a[i]=k; //赋值为k
}
for(int i=1;i<n;i++) m=max(m,abs(a[i]-a[i+1])); //找出最大m
printf("%d %d\n",m,k);
}
return 0;
}