#include <bits/stdc++.h>
using namespace std;
const int MAXN = 300010, inf = 1e9;
int n;
int x[MAXN], y[MAXN];
int sol[MAXN];
set<pair<int, int> > sx, sy;
set<pair<int, int> > s, sc;
multiset<int, int> rx, ry;
int per(int xl, int xr, int yd, int yu) {
  int ret = 2 * (xr - xl + yu - yd);
  return ret;
}
int _per(int xa, int ya, int xb, int yb, int xc, int yc) {
  int minx, maxx, miny, maxy;
  minx = min(xa, min(xb, xc));
  maxx = max(xa, max(xb, xc));
  miny = min(ya, min(yb, yc));
  maxy = max(ya, max(yb, yc));
  return 2 * (maxx - minx + maxy - miny);
}
int calc(pair<int, int> p1, pair<int, int> p2) {
  int ret = 0;
  for (int i = 0; i < n; i++) {
    pair<int, int> pxy = {x[i], y[i]};
    if (pxy == p1 || pxy == p2) continue;
    ret = max(ret, _per(p1.first, p1.second, p2.first, p2.second, x[i], y[i]));
  }
  return ret;
}
void solve() {
  vector<pair<int, int> > p;
  for (set<pair<int, int> >::iterator it = s.begin(); it != s.end(); it++) {
    p.push_back(*it);
  }
  for (int i = 0; i < p.size(); i++) {
    for (int j = i + 1; j < p.size(); j++) {
      if (p[i] == p[j]) continue;
      sol[3] = max(sol[3], calc(p[i], p[j]));
    }
  }
}
int main() {
  cin >> n;
  for (int i = 0; i < n; i++) {
    cin >> x[i] >> y[i];
    sx.insert({x[i], y[i]});
    sy.insert({y[i], x[i]});
  }
  if (n == 3) {
    int xl = inf, xr = -inf, yd = inf, yu = -inf;
    for (int i = 0; i < n; i++) {
      xl = min(xl, x[i]);
      xr = max(xr, x[i]);
      yd = min(yd, y[i]);
      yu = max(yu, y[i]);
    }
    cout << per(xl, xr, yd, yu) << "\n";
    return 0;
  }
  s.insert(*sx.begin());
  s.insert(*(--sx.end()));
  s.insert({(*(sy.begin())).second, (*sy.begin()).first});
  s.insert({(*(--sy.end())).second, (*(--sy.end())).first});
  solve();
  sol[4] = per((*sx.begin()).first, (*--sx.end()).first, (*sy.begin()).first,
               (*--sy.end()).first);
  for (int i = 5; i <= n; i++) {
    sol[i] = sol[4];
  }
  for (int i = 3; i <= n; i++) {
    cout << sol[i] << " ";
  }
  return 0;
}
