#include <bits/stdc++.h>
using namespace std;
int n;
struct node {
  int x, y;
} a[1000005], s[5];
int read() {
  char c = getchar();
  int ans = 0;
  bool flag = 1;
  while (c < '0' || c > '9') {
    if (c == '-') flag = 0;
    c = getchar();
  }
  while (c >= '0' && c <= '9')
    ans = (ans << 1) + (ans << 3) + (c ^ 48), c = getchar();
  if (flag) return ans;
  return ~ans + 1;
}
int Abs(int x) { return x >= 0 ? x : -x; }
int dist(node u, node v) { return Abs(u.x - v.x) + Abs(u.y - v.y); }
int main() {
  n = read();
  for (register int i = 1; i <= n; i++) a[i].x = read(), a[i].y = read();
  s[1] = s[2] = s[3] = s[4] = a[1];
  for (register int i = 2; i <= n; i++) {
    if (a[i].x < s[1].x) s[1] = a[i];
    if (a[i].x > s[2].x) s[2] = a[i];
    if (a[i].y < s[3].y) s[3] = a[i];
    if (a[i].y > s[4].y) s[4] = a[i];
  }
  int ans = 0;
  for (register int i = 1; i <= 4; i++)
    for (register int j = i + 1; j <= 4; j++)
      for (register int k = 1; k <= n; k++)
        ans = max(ans, dist(s[i], s[j]) + dist(s[i], a[k]) + dist(s[j], a[k]));
  printf("%d ", ans);
  ans =
      dist(s[1], s[3]) + dist(s[3], s[2]) + dist(s[2], s[4]) + dist(s[4], s[1]);
  for (register int i = 4; i <= n; i++) printf("%d ", ans);
  return 0;
}
