#include <bits/stdc++.h>
using namespace std;
template <class T>
inline int size(const T& t) {
  return t.size();
}
int wx[5000], wy[5000];
int x0 = 1000000000, x1 = -1000000000, Y0 = 1000000000, Y1 = -1000000000;
int N, roz;
int podlicz(int k1x0, int k1x1, int k1Y0, int k1Y1, int k2x0, int k2x1,
            int k2Y0, int k2Y1) {
  int ile = 0;
  for (int a = 0; a < (N); ++a)
    if (wx[a] >= k1x0 && wx[a] <= k1x1 && wy[a] >= k1Y0 && wy[a] <= k1Y1 &&
        wx[a] >= k2x0 && wx[a] <= k2x1 && wy[a] >= k2Y0 && wy[a] <= k2Y1)
      ++ile;
  return ile;
}
bool pasuje(int k1x0, int k1x1, int k1Y0, int k1Y1, int k2x0, int k2x1,
            int k2Y0, int k2Y1) {
  for (int a = 0; a < (N); ++a) {
    if (wx[a] >= k1x0 && wx[a] <= k1x1 && wy[a] >= k1Y0 && wy[a] <= k1Y1)
      continue;
    if (wx[a] >= k2x0 && wx[a] <= k2x1 && wy[a] >= k2Y0 && wy[a] <= k2Y1)
      continue;
    return false;
  }
  return true;
}
bool czy_starczy() {
  if (pasuje(x0, x0 + roz, Y0, Y0 + roz, x1 - roz, x1, Y1 - roz, Y1))
    return true;
  if (pasuje(x0, x0 + roz, Y1 - roz, Y1, x1 - roz, x1, Y0, Y0 + roz))
    return true;
  return false;
}
void znajdz_rozmiar() {
  int l = -1, p = 20000;
  while (p - l > 1) {
    roz = (p + l) / 2;
    if (czy_starczy())
      p = roz;
    else
      l = roz;
  }
  roz = p;
}
int dwa_do(int nr) {
  int res = 1;
  for (int a = 0; a < (nr); ++a) res = 2 * res % 1000000007;
  return res;
}
int main() {
  scanf("%d", &N);
  for (int a = 0; a < (N); ++a) {
    int x, y;
    scanf("%d%d", &x, &y);
    wx[a] = x + y;
    wy[a] = x - y;
    x0 = min(x0, wx[a]);
    x1 = max(x1, wx[a]);
    Y0 = min(Y0, wy[a]);
    Y1 = max(Y1, wy[a]);
  }
  if (Y1 - Y0 > x1 - x0) {
    swap(x0, Y0);
    swap(x1, Y1);
    for (int a = 0; a < (N); ++a) swap(wx[a], wy[a]);
  }
  znajdz_rozmiar();
  printf("%d\n", roz);
  if (Y1 - Y0 == x1 - x0 && Y1 - Y0 == roz)
    printf("%d\n", dwa_do(N));
  else if (Y1 - Y0 <= roz)
    printf("%d\n", dwa_do(1 + podlicz(x0, x0 + roz, Y0, Y0 + roz, x1 - roz, x1,
                                      Y1 - roz, Y1)));
  else {
    int w = 0;
    if (pasuje(x0, x0 + roz, Y0, Y0 + roz, x1 - roz, x1, Y1 - roz, Y1))
      w = dwa_do(
          1 + podlicz(x0, x0 + roz, Y0, Y0 + roz, x1 - roz, x1, Y1 - roz, Y1));
    if (pasuje(x0, x0 + roz, Y1 - roz, Y1, x1 - roz, x1, Y0, Y0 + roz))
      w = (w + dwa_do(1 + podlicz(x0, x0 + roz, Y1 - roz, Y1, x1 - roz, x1, Y0,
                                  Y0 + roz))) %
          1000000007;
    printf("%d\n", w);
  }
}
