#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<queue>
#include<list>
#include<cmath>
#include<vector>
#define inf 0x3f3f3f3f
using namespace std;
const int maxn=1000010;
int MAX(int a,int b)
{
return a>b?a:b;
}
int MIN(int a,int b)
{
return a<b?a:b;
}
int n;
int dpmin[maxn][30];
int dpmax[maxn][30];
void init()
{
int i,j;
for(j=1;j<=log2(n+1);++j)
{
for(i=1;i<=n-(1<<j)+1;++i)
{
dpmax[i][j]=MAX(dpmax[i][j-1],dpmax[i+(1<<(j-1))][j-1]);
dpmin[i][j]=MIN(dpmin[i][j-1],dpmin[i+(1<<(j-1))][j-1]);
}
}
}
int querymax(int l,int r){
int k=log2(r-l+1);
return MAX(dpmax[l][k],dpmax[r-(1<<k)+1][k]);
}
int querymin(int l,int r){
int k=log2(r-l+1);
return MIN(dpmin[l][k],dpmin[r-(1<<k)+1][k]);
}
int main()
{
int t,i,j,k;
scanf("%d",&t);
while(t--){
scanf("%d",&n);
for(i=1;i<=n;++i){
scanf("%d",&dpmax[i][0]);
dpmin[i][0]=dpmax[i][0];
}
init();
int ans=-inf;
for(i=1;i<n;++i){
ans=max(ans,querymax(1,i)-querymin(i+1,n));
}
printf("%d\n",ans);
}
return 0;
}