#include using namespace std; using ll = long long; const int N = 2e3+5; int n,m,X,vis[N];ll dis[N]; struct dot{ int x,y; }a[N]; struct sss{ ll v,w; }; vectorg[N]; bool chk(int x){ for(int i = 1;i<=m+2;i++)dis[i]=0x3f3f3f3f3f3f3f3fLL,vis[i]=0; int s = m+2,t=m+1; dis[s]=0; for(int i = 1;i<=m+2;i++){ ll res = 4557430888798830399ll,q=0; for(int j = 1;j<=m+2;j++){ if(dis[j]<=res&&(!vis[j]))res=dis[j],q=j; } vis[q]=1;ll w= dis[q]; for(auto v:g[q]){ ll nw=w+(v.w-1)/x; if(nw0?a[i].x-a[j].x:-a[i].x+a[j].x)+(a[i].y-a[j].y>0?a[i].y-a[j].y:-a[i].y+a[j].y)}); } } //for(int i = 1;i<=m+2;i++){ // for(auto j:g[i]){ // printf("%d %d %d\n",i,j.v,j.w); // } //} //printf("%d\n",chk(4)); int l = 0,r=1e9+1; while(l+1>1; if(chk(mid))r=mid; else l=mid; } printf("%d\n",r); }