func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 5010;   const int MOD = 1000000007;   int n, x[N], y[N], w[N][N], vis[N];   inline void dfs(int v, int val) {     for (int u = 0; u < n; u++) {       if (w[v][u] > val) {         if (vis[u] == vis[v]) throw 0;         if (vis[u] != -1) continue;         vis[u] = !vis[v];         dfs(u, val);       }     }   }   inline int check(int val) {     memset(vis, -1, sizeof vis);     int ans = 1;     for (int i = 0; i < n; i++)       if (vis[i] == -1) {         try {           vis[i] = 0;           dfs(i, val);         } catch (...) {           return 0;         }         ans += ans;         if (ans >= MOD) ans -= MOD;       }     return ans;   }   int main() {     scanf( %d , &n);     for (int i = 0; i < n; i++) scanf( %d%d , x + i, y + i);     for (int i = 0; i < n; i++)       for (int j = i + 1; j < n; j++)         w[i][j] = w[j][i] = abs(x[i] - x[j]) + abs(y[i] - y[j]);     int lo = 0, hi = 10050, mid;     while (lo < hi) {       mid = lo + hi >> 1;       if (check(mid))         hi = mid;       else         lo = mid + 1;     }     cout << hi <<   n  << check(hi) <<   n ;     return 0;   }   