#include #include #include #include #include int T,n,d,dis[1010],nxt[1010],h,in[1010],cnt[1010]; const int inf=1000000000; using namespace std; struct node { int id,h; node(int a=0,int b=0):id(a),h(b){} friend bool operator < (node a,node b) { return a.hvt[1010]; node a[1010]; int spfa(int x,int y) { fill(dis,dis+1+n,inf); memset(in,0,sizeof(in)); dis[x]=0; in[x]=1; memset(cnt,0,sizeof(cnt)); cnt[x]=1; queueq; q.push(x); while(!q.empty()) { int s=q.front(); q.pop(); in[s]=0; for(int i=0;idis[s]+l) { dis[y]=dis[s]+l; if(!in[y]) { q.push(y); cnt[y]++; if(cnt[y]>n)return -1; in[y]=1; } } } } return dis[y]; } int main() { scanf("%d",&T); for(int cas=1;cas<=T;cas++) { scanf("%d%d",&n,&d); for(int i=1;i<=n;i++) vt[i].clear(); for(int i=1;i<=n;i++) { scanf("%d",&h); a[i]=node(i,h); } sort(a+1,a+1+n); for(int i=1;i