int@n,@m,@d[n][m]; sortA(m,d[0..n-1]); int l=-1,h=1d9+1,k; while(l+1<h){ k=l+h>>1; VI u(m,1); rep(y,1,n){ VI v(m); int w=0; rep(x,m){ if(u[x]){ while(w<m&&d[y][w]<d[y-1][x]){ ++w; } while(w<m&&d[y][w]-d[y-1][x]<=k){ v[w]=1; ++w; } } } u=v; } if(max(u(m))){ h=k; }else{ l=k; } } wt(h>1d9?-1:h);