#include <bits/stdc++.h>
using namespace std;
inline char get(void) {
  static char buf[100000], *S = buf, *T = buf;
  if (S == T) {
    T = (S = buf) + fread(buf, 1, 100000, stdin);
    if (T == S) return EOF;
  }
  return *S++;
}
inline void read(int& x) {
  static char c;
  x = 0;
  for (c = get(); c < '0' || c > '9'; c = get())
    ;
  for (; c >= '0' && c <= '9'; c = get()) x = x * 10 + c - '0';
}
const int M = 1000 * 1000 + 10;
int n;
int hx = -0x3f3f3f3f, hy = -0x3f3f3f3f, lx = 0x3f3f3f3f, ly = 0x3f3f3f3f;
struct point {
  int x, y;
} p[M], ch[10];
bool cmp_x(const point& a, const point& b) {
  return a.x == b.x ? a.y < b.y : a.x < b.x;
}
bool cmp_y(const point& a, const point& b) {
  return a.y == b.y ? a.x < b.x : a.y < b.y;
}
int cal(const point& a, const point& b, const point& c) {
  int re = 0;
  re += abs(a.x - b.x) + abs(a.x - c.x) + abs(c.x - b.x);
  re += abs(a.y - b.y) + abs(a.y - c.y) + abs(c.y - b.y);
  return re;
}
int solve() {
  int re = 0;
  sort(p, p + n, cmp_y);
  int cn = 0;
  ch[cn++] = p[0];
  ch[cn++] = p[n - 1];
  if (p[1].y == p[0].y) ch[cn++] = p[1];
  if (p[n - 1].y == p[n - 2].y) ch[cn++] = p[n - 2];
  sort(p, p + n, cmp_x);
  ch[cn++] = p[0];
  ch[cn++] = p[n - 1];
  if (p[1].x == p[0].x) ch[cn++] = p[1];
  if (p[n - 1].x == p[n - 2].x) ch[cn++] = p[n - 2];
  for (int i = 0; i < cn - 1; ++i)
    for (int j = i + 1; j < cn; ++j) {
      for (int k = 0; k < n; ++k) re = max(re, cal(ch[i], ch[j], p[k]));
    }
  return re;
}
int main() {
  ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  cin >> n;
  int x, y;
  for (int i = 0; i < n; ++i) {
    cin >> x >> y;
    p[i].x = x;
    p[i].y = y;
    hx = max(hx, x);
    hy = max(hy, y);
    lx = min(lx, x);
    ly = min(ly, y);
  }
  cout << solve() << " ";
  int ans = (hx - lx + hy - ly) << 1;
  for (int i = 3; i < n; ++i) cout << ans << " ";
  cout << endl;
  return 0;
}
