#include <bits/stdc++.h>
#define FAST ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
typedef int ll;
typedef long double ld;
#define pb push_back
#define mp make_pair
#define ff first
#define ss second
#define mod 1000000007
#define pii pair<ll,ll>
#define inf 2000000000
#define bpc(x) __builtin_popcountll(x)
#define autoit(x,it) for(auto it = x.begin(); it != x.end(); it++)
#define autoitr(x,it) for(auto it = x.rbegin(); it != x.rend(); it++)
#define rep(n) for(ll i = 0; i < n; i++)
#define repi(i,n) for(ll i = 0; i < n; i++)

#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;

#define ordered_set tree<ll, null_type,less<ll>, rb_tree_tag,tree_order_statistics_node_update>

using namespace std;
mt19937_64 mt(chrono::steady_clock::now().time_since_epoch().count());

string a,b;
ll n,m;
#define N 5005
ll dp[N][N];

ll get(ll i, ll j)
{
    if(i == n || j == m)
        return 0;
    if(dp[i][j] != -inf)
        return dp[i][j];
    ll ans = -2;
    if(a[i] == b[j])
        ans+=4;
    ans+=max(0, get(i+1,j+1));
    ans = max(ans, get(i,j+1) - 1);
    ans = max(ans, get(i+1,j) - 1);
    return dp[i][j] = ans;
}

int main()
{
  FAST/**/

   cin>>n>>m;
   cin>>a>>b;

   rep(n)
        repi(j,m)
            dp[i][j] = -inf;
   ll ans = -2;
   rep(n)
        repi(j,m)
            ans = max(ans, get(i,j));
   ans = max(ans, 0ll);
   cout<<ans;

  return 0;
}


#include<bits/stdc++.h>
#pragma comment(linker, "/stack:200000000")
#pragma GCC optimize("Ofast")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#pragma GCC optimization ("unroll-loops")
using namespace std;
#define TRACE
#ifdef TRACE
#define trace(...) __f(#__VA_ARGS__, __VA_ARGS__)
template <typename Arg1>
void __f(const char* name, Arg1&& arg1){
      cerr << name << " : " << arg1 << endl;
}
template <typename Arg1, typename... Args>
void __f(const char* names, Arg1&& arg1, Args&&... args){
      const char* comma = strchr(names + 1, ',');cerr.write(names, comma - names) << " : " << arg1<<" | ";__f(comma+1, args...);
}
#else
#define trace(...)
#endif

//#define int long long
const int N = 5005;
int dp[N][N],n,m,lol;
string s,t;
int func(int i,int j){
    if(i==n || j==m)return 0;
    if(dp[i][j]!=-1)return dp[i][j];

    if(s[i]==t[j]){
        dp[i][j] = func(i+1,j+1) + 2;
        lol = max(lol , dp[i][j]);
    }

    int cur = max( func(i+1,j) , func(i,j+1) );
    lol = max(lol , cur);
    dp[i][j] = max({dp[i][j],0,cur-1});
    return dp[i][j];
}
int32_t main(){
    ios_base:: sync_with_stdio(false);
    cin.tie(NULL); cout.tie(NULL);
    cin>>n>>m;
    cin>>s>>t;
    memset(dp,-1,sizeof(dp));
    func(0,0);
    cout<<lol;
}


#include<bits/stdc++.h>

using namespace std;

#define inf 1e18
#define ll long long

ll perimeter(pair<ll,ll> a, pair<ll,ll> b, pair<ll,ll> c)
{
  ll ans = abs(a.first-b.first) + abs(b.first-c.first) + abs(c.first-a.first);
  ans += abs(b.second-c.second) + abs(a.second-c.second) + abs(a.second-b.second);
  return ans;
}

int main(void)
{
  int n; cin>>n;
  pair<ll,ll> point[n];
  for(int i=0; i<n; i++)
  {
    cin>>point[i].first>>point[i].second;
  }

  ll mnx = inf, mny = inf,mxx=-inf,mxy=-inf;
  vector<int> possible;
  for(int i=0; i<n; i++)
  {
    if(point[i].first>mxx)
      mxx = point[i].first;
    if(point[i].first<mnx)
      mnx = point[i].first;
    if(point[i].second>mxy)
      mxy = point[i].second;
    if(point[i].second<mny)
      mny = point[i].second;
  }
  for(int i=0; i<n; i++)
  {
    if(point[i].first==mnx || point[i].first==mxx)
    {
      possible.push_back(i);
      continue;
    }
    if(point[i].second==mxy || point[i].second==mny)
      possible.push_back(i);
  }
  ll temp = mxx-mnx + mxy-mny;
  temp = temp*2;
  ll ans = -inf;

  for(int i=0; i<possible.size(); i++)
  {
    for(int j=i+1; j<possible.size(); j++)
    {
      for(int k=0; k<n; k++)
      {
        if(k==possible[i] || k==possible[j])
          continue;
        ans = max(ans, perimeter(point[possible[i]],point[possible[j]], point[k]));
      }
    }
  }
  cout<<ans<<" ";
  for(int i=4; i<=n; i++)
    cout<<temp<<" ";
  return 0;
}


#include<bits/stdc++.h>
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define sz(a) int(a.size())
#define clr(a) memset(a,0,sizeof(a))
#define all(a) a.begin(),a.end()
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
typedef pair<int,int> pii;
typedef pair<ll,int> pli;
const int inf=1e9;
const ll Inf=1e18;
const int N=3e5+10;
const int mod=0;
int gi() {
    int x=0,o=1;char ch=getchar();
    while((ch<'0'||ch>'9')&&ch!='-') ch=getchar();
    if(ch=='-') o=-1,ch=getchar();
    while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar();
    return x*o;
}
template<typename T> bool chkmax(T &a,T b) { return a<b?a=b,1:0; };
template<typename T> bool chkmin(T &a,T b) { return a>b?a=b,1:0; };
int add(int a,int b) { return a+b>=mod?a+b-mod:a+b; }
int sub(int a,int b) { return a-b<0?a-b+mod:a-b; }
void inc(int &a,int b) { a=(a+b>=mod?a+b-mod:a+b); }
void dec(int &a,int b) { a=(a-b<0?a-b+mod:a-b); }
int n,x[N],y[N],pre[N],nxt[N],f[N];
int calc(int a,int b,int c) {
    return -abs(x[b]-x[a])-abs(y[b]-y[a])-abs(x[c]-x[b])-abs(y[c]-y[b])+abs(x[c]-x[a])+abs(y[c]-y[a]);
}
priority_queue<pii> q,d;
vector<ll> v;
int main() {
    cin>>n;
    for(int i=1;i<=n;i++) x[i]=gi(),y[i]=gi();
    for(int i=1;i<=n;i++) pre[i]=i-1,nxt[i]=i+1;
    pre[1]=n;
    nxt[n]=1;
    ll ans=0;
    for(int i=1;i<=n;i++) ans+=abs(x[i]-x[pre[i]])+abs(y[i]-y[pre[i]]);
    for(int i=1;i<=n;i++) q.push(mp(f[i]=calc(pre[i],i,nxt[i]),i));
    v.pb(ans);
    int now=n;
    while(1) {
        --now;
        if(now<3) break;
        while(!d.empty()&&q.top()==d.top())
            q.pop(),d.pop();
        int u=q.top().se;
        ans+=f[u];
        v.pb(ans);
        q.pop();
        int x=pre[u],y=nxt[u];
        nxt[x]=y;pre[y]=x;
        d.push(mp(f[x],x));
        d.push(mp(f[y],y));
        q.push(mp(f[x]=calc(pre[x],x,nxt[x]),x));
        q.push(mp(f[y]=calc(pre[y],y,nxt[y]),y));
    }
    reverse(all(v));
    for(ll x:v) printf("%lld ",x);
    return 0;
}


#include <bits/stdc++.h>

using namespace std;

typedef unsigned long long ull;
typedef long long ll;
typedef long double ld;
//#define int ll
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef vector<int> vi;
typedef vector< vi > vvi;
typedef vector< vvi > vvvi;
typedef vector<short> vs;
typedef vector<vs> vvs;
typedef vector<vvs> vvvs;
typedef vector<ll> vl;
typedef vector<vl> vvl;
typedef vector<vvl> vvvl;
typedef vector<ld> vld;
typedef vector<vld> vvld;
typedef vector<vvld> vvvld;
typedef vector<string> vst;
typedef vector<vst> vvst;
typedef pair<ld, ld> pld;
typedef complex<double> base;

#define inmin(a, b) a = min(a, (b))
#define inmax(a, b) a = max(a, (b))
#define modsum(a, b) ((a) + (b) >= M ? (a) + (b) - M : (a) + (b))
#define modsubtract(a, b) ((a) - (b) < 0 ? (a) - (b) + M : (a) - (b))
#define modmultiply(a, b) (((a) * (b)) % M)
#define insum(a, b)  a = modsum(a, (b))
#define insubtract(a, b) a = modsubtract(a, (b))
#define inmultiply(a, b) a = modmultiply(a, (b))
#define ALL(a) a.begin(),a.end()
#define RALL(a) a.rbegin(),a.rend()
#define sqr(x) ((x) * (x))
#define fori(i, n) for(int i = 0; i < (int)(n); ++i)
#define cint const int &
#define SZ(a) ((int)(a.size()))
#ifdef MAX_HOME
#define watch(x) cout << (#x) << " = " << x << endl;
#else
#define watch(x) cerr << (#x) << " = " << x << endl;
#endif

const double PI = 2 * acos(0.0);

const string DIGITS = "0123456789";
const string ALPH = "abcdefghijklmnopqrstuvwxyz";

template<class T>
ostream & operator << (ostream &out, vector<T> &a) {
    out << "{";
    for (auto x : a) out << x << " ";
    return out << "}";
}

template<class T>
ostream & operator << (ostream &out, pair<T, T> &a) {
    out << "{";
    cout << a.first << ", " << a.second;
    return out << "}";
}

void smain();
void gen_test();

signed main() {
    ios::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);

#ifdef MAX_HOME
    freopen("input.txt", "r", stdin);
#endif

#ifdef MAX_HOME
    clock_t start = clock();
#endif
    cout << setprecision(12) << fixed;
    smain();
#ifdef MAX_HOME
    cout << "\n\n\n\n";
    cout << "TOTAL EXECUTION TIME: " << float( clock () - start ) /  CLOCKS_PER_SEC << endl;
#endif
}

void gen_test() {
    freopen("input.txt", "w", stdout);

}
/* END OF TEMPLATE ========================================================================================================================================== */;

const int N = 3e5 + 9;
int n;
const ll oo = 1e15;
vector<pll> a;
void smain() {

    cin >> n;
    ll min_x = oo, max_x = -oo, min_y = oo, max_y = -oo;
    fori (i, n) {
        int x, y;
        cin >> x >> y;
        a.push_back({x, y});
        inmin(min_x, a[i].first);
        inmax(max_x, a[i].first);
        inmin(min_y, a[i].second);
        inmax(max_y, a[i].second);
    }
    ll ans4 = (max_x - min_x + max_y - min_y) * 2;
    ll ans3 = 0;
    fori (i, n) {
        if (a[i].first == min_x || a[i].first == max_x) {
            inmax(ans3, max_x - min_x + abs(max_y - a[i].second));
            inmax(ans3, max_x - min_x + abs(min_y - a[i].second));
        }
        if (a[i].second == min_y || a[i].second == max_y) {
            inmax(ans3, max_y - min_y + abs(max_x - a[i].first));
            inmax(ans3, max_y - min_y + abs(min_x - a[i].first));
        }
    }
    ans3 <<= 1;
    cout << ans3 << " ";
    for (int i = 4; i <= n; ++i) cout << ans4 << " ";
}


#include <bits/stdc++.h>

using namespace std;

typedef unsigned long long ull;
typedef long long ll;
typedef long double ld;
//#define int ll
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef vector<int> vi;
typedef vector< vi > vvi;
typedef vector< vvi > vvvi;
typedef vector<short> vs;
typedef vector<vs> vvs;
typedef vector<vvs> vvvs;
typedef vector<ll> vl;
typedef vector<vl> vvl;
typedef vector<vvl> vvvl;
typedef vector<ld> vld;
typedef vector<vld> vvld;
typedef vector<vvld> vvvld;
typedef vector<string> vst;
typedef vector<vst> vvst;
typedef pair<ld, ld> pld;
typedef complex<double> base;

#define inmin(a, b) a = min(a, (b))
#define inmax(a, b) a = max(a, (b))
#define modsum(a, b) ((a) + (b) >= M ? (a) + (b) - M : (a) + (b))
#define modsubtract(a, b) ((a) - (b) < 0 ? (a) - (b) + M : (a) - (b))
#define modmultiply(a, b) (((a) * (b)) % M)
#define insum(a, b)  a = modsum(a, (b))
#define insubtract(a, b) a = modsubtract(a, (b))
#define inmultiply(a, b) a = modmultiply(a, (b))
#define ALL(a) a.begin(),a.end()
#define RALL(a) a.rbegin(),a.rend()
#define sqr(x) ((x) * (x))
#define fori(i, n) for(int i = 0; i < (int)(n); ++i)
#define cint const int &
#define SZ(a) ((int)(a.size()))
#ifdef MAX_HOME
#define watch(x) cout << (#x) << " = " << x << endl;
#else
#define watch(x) cerr << (#x) << " = " << x << endl;
#endif

const double PI = 2 * acos(0.0);

const string DIGITS = "0123456789";
const string ALPH = "abcdefghijklmnopqrstuvwxyz";

template<class T>
ostream & operator << (ostream &out, vector<T> &a) {
    out << "{";
    for (auto x : a) out << x << " ";
    return out << "}";
}

template<class T>
ostream & operator << (ostream &out, pair<T, T> &a) {
    out << "{";
    cout << a.first << ", " << a.second;
    return out << "}";
}

void smain();
void gen_test();

signed main() {
    ios::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);

#ifdef MAX_HOME
    freopen("input.txt", "r", stdin);
#endif

#ifdef MAX_HOME
    clock_t start = clock();
#endif
    cout << setprecision(12) << fixed;
    smain();
#ifdef MAX_HOME
    cout << "\n\n\n\n";
    cout << "TOTAL EXECUTION TIME: " << float( clock () - start ) /  CLOCKS_PER_SEC << endl;
#endif
}

void gen_test() {
    freopen("input.txt", "w", stdout);

}
/* END OF TEMPLATE ========================================================================================================================================== */;

const int N = 3e5 + 9;
int n;
const ll oo = 1e15;
vector<pll> a;
void smain() {

    cin >> n;
    ll min_x = oo, max_x = -oo, min_y = oo, max_y = -oo;
    fori (i, n) {
        int x, y;
        cin >> x >> y;
        a.push_back({x, y});
        inmin(min_x, a[i].first);
        inmax(max_x, a[i].first);
        inmin(min_y, a[i].second);
        inmax(max_y, a[i].second);
    }
    ll ans4 = (max_x - min_x + max_y - min_y) * 2;
    ll ans3 = 0;
    fori (i, n) {
        ll cur = max(max_x - a[i].first, a[i].first - min_x) + max(max_y - a[i].second, a[i].second - min_y);
        inmax(ans3, cur);
    }
    ans3 <<= 1;
    cout << ans3 << " ";
    for (int i = 4; i <= n; ++i) cout << ans4 << " ";
}


#include <bits/stdc++.h>
using namespace std;
#pragma GCC optimize("O3")
#pragma GCC optimize("no-stack-protector")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("fast-math")
#pragma GCC target("sse,sse2,sse3,ssse3,popcnt,abm,mmx,tune=native")
typedef long long ll;
typedef long double ld;
typedef pair<int,int> pii;
#define fs first
#define sc second
#define dbg(x) cout<<#x<<" = "<<x<<endl;
#define at mutable_reference_at
mt19937 rng(time(NULL));
const int inf = 1e9+100;
const ll linf = 2e18;
const ll maxn = 2e5+100;
const int mod = 1e9+7;
const ld eps = 1e-9;

int main() {
#ifdef LOCAL
	freopen("input.txt","r", stdin);
	freopen("output.txt","w",stdout);
#endif
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	int n;
	cin>>n;
	pair<int,int> a[n];
	pair<int,int> b[4];
	for (int i = 0;i<n;++i) cin>>a[i].fs>>a[i].sc;
	for (int i = 0;i<4;++i) b[i] = a[0];
	for (int i = 0;i<n;++i) {
		if (a[i].fs < b[0].fs) b[0] = a[i];
		if (a[i].fs > b[2].fs) b[2] = a[i];
		if (a[i].sc < b[1].sc) b[1] = a[i];
		if (a[i].sc > b[3].sc) b[3] = a[i];
	}
	int ans2 = 2*(b[2].fs-b[0].fs+b[3].sc-b[1].sc);
	int ans1 = 0;
	for (int i = 0;i<n;++i) {
		for (int j = 0;j<4;++j) {
			ans1 = max(ans1, abs(b[j].fs-b[(j+1)%4].fs) + abs(b[j].sc-b[(j+1)%4].sc) +
							 abs(b[j].fs-a[i].fs) + abs(b[j].sc-a[i].sc) +
							 abs(b[(j+1)%4].fs-a[i].fs) + abs(b[(j+1)%4].sc-a[i].sc));
		}
	}
	cout<<ans1<<" ";
	for (int i = 4;i<=n;++i) {
		cout<<ans2<<" ";
	}
	return 0;
}


#include <bits/stdc++.h>
using namespace std;
#pragma GCC optimize("O3")
#pragma GCC optimize("no-stack-protector")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("fast-math")
#pragma GCC target("sse,sse2,sse3,ssse3,popcnt,abm,mmx,tune=native")
typedef long long ll;
typedef long double ld;
typedef pair<int,int> pii;
#define fs first
#define sc second
#define dbg(x) cout<<#x<<" = "<<x<<endl;
#define at mutable_reference_at
mt19937 rng(time(NULL));
const int inf = 1e9+100;
const ll linf = 2e18;
const ll maxn = 2e5+100;
const int mod = 1e9+7;
const ld eps = 1e-9;

int c[300][300];
int dp[300][300];

int main() {
#ifdef LOCAL
	freopen("input.txt","r", stdin);
	freopen("output.txt","w",stdout);
#endif
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	int n;
	cin>>n;
	pair<int,int> a[n];
	pair<int,int> b[4];
	for (int i = 0;i<n;++i) cin>>a[i].fs>>a[i].sc;
	for (int i = 0;i<4;++i) b[i] = a[0];
	for (int i = 0;i<n;++i) {
		if (a[i].fs < b[0].fs) b[0] = a[i];
		if (a[i].fs > b[1].fs) b[1] = a[i];
		if (a[i].sc < b[2].sc) b[2] = a[i];
		if (a[i].sc > b[3].sc) b[3] = a[i];
	}
	int ans2 = 2*(b[1].fs-b[0].fs+b[3].sc-b[2].sc);
	int ans1 = 0;
	for (int i = 0;i<n;++i) {
		for (int j = 0;j<4;++j) {
			ans1 = max(ans1, abs(b[j].fs-b[(j+1)%4].fs) + abs(b[j].sc-b[(j+1)%4].sc) +
							 abs(b[j].fs-a[i].fs) + abs(b[j].sc-a[i].sc) +
							 abs(b[(j+1)%4].fs-a[i].fs) + abs(b[(j+1)%4].sc-a[i].sc));
		}
	}
	cout<<ans1<<" ";
	for (int i = 4;i<=n;++i) {
		cout<<ans2<<" ";
	}
	return 0;
}


#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>

using namespace std;
using namespace __gnu_pbds;
using ll = long long;
using ld = long double;
using ii = pair<ll, ll>;
using vi = vector<ll>;
using vvi = vector<vi>;
using vii = vector<ii>;
using vvii = vector<vii>;

template<class T>
using min_heap = priority_queue<T, vector<T>, greater<T>>;
template<class TIn, class TOut = null_type>
using order_tree = tree<TIn, TOut, less<TIn>, rb_tree_tag,
	tree_order_statistics_node_update>;

constexpr int INF = 2000000010;
constexpr ll LLINF = 9000000000000000010LL;

ll mhd(ll x1, ll y1, ll x2, ll y2) {
	return abs(x1-x2) + abs(y1-y2);
}
ll mhdt(int i, int j, int k, const vi &x, const vi &y) {
	return mhd(x[i], y[i], x[j], y[j]) + mhd(x[j], y[j], x[k], y[k])
			+ mhd(x[k], y[k], x[i], y[i]);
}

int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL);

	int n;
	cin >> n;
	vi x(n), y(n);
	for (int i = 0; i < n; ++i)
		cin >> x[i] >> y[i];

	int l = 0, r = 0, u = 0, b = 0;
	for (int i = 1; i < n; ++i) {
		if (x[i] < x[l]) l = i;
		if (x[i] > x[r]) r = i;
		if (y[i] < y[b]) b = i;
		if (y[i] > y[u]) u = i;
	}

	ll d3 = 0LL;
	for (int i = 0; i < n; ++i)
		d3 = max(d3,
			max(mhdt(i, l, r, x, y),
			max(mhdt(i, l, u, x, y),
			max(mhdt(i, l, b, x, y),
			max(mhdt(i, r, u, x, y),
			max(mhdt(i, r, b, x, y),
				mhdt(i, u, b, x, y)))))));

	ll d4 = mhd(x[l], y[l], x[u], y[u]) + mhd(x[u], y[u], x[r], y[r])
			+ mhd(x[r], y[r], x[b], y[b]) + mhd(x[b], y[b], x[l], y[l]);
	cout << d3;
	for (int i = 4; i <= n; ++i)
		cout << ' ' << d4;
	cout << endl;

	return 0;
}


#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>

using namespace std;
using namespace __gnu_pbds;
using ll = long long;
using ld = long double;
using ii = pair<ll, ll>;
using vi = vector<ll>;
using vvi = vector<vi>;
using vii = vector<ii>;
using vvii = vector<vii>;

template<class T>
using min_heap = priority_queue<T, vector<T>, greater<T>>;
template<class TIn, class TOut = null_type>
using order_tree = tree<TIn, TOut, less<TIn>, rb_tree_tag,
	tree_order_statistics_node_update>;

constexpr int INF = 2000000010;
constexpr ll LLINF = 9000000000000000010LL;

ll mhd(ll x1, ll y1, ll x2, ll y2) {
	return abs(x1-x2) + abs(y1-y2);
}

int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL);

	int n;
	cin >> n;
	vi x(n), y(n);
	for (int i = 0; i < n; ++i)
		cin >> x[i] >> y[i];

	int l = 0, r = 0, u = 0, b = 0;
	for (int i = 1; i < n; ++i) {
		if (x[i] < x[l]) l = i;
		if (x[i] > x[r]) r = i;
		if (y[i] < y[b]) b = i;
		if (y[i] > y[u]) u = i;
	}

	ll d3 = 0LL;
	int id[4] = {l, u, r, b};
	for (int i = 0; i < 4; ++i) {
		ll d = 0LL;
		for (int j = 0; j < 4; ++j) {
			if (j == i) continue;
			int nxt = (j+1)%4;
			if (nxt == i)
			nxt = (nxt+1)%4;
			d += mhd(x[id[j]], y[id[j]], x[id[nxt]], y[id[nxt]]);
		}
		d3 = max(d, d3);
	}

	ll d4 = mhd(x[l], y[l], x[u], y[u]) + mhd(x[u], y[u], x[r], y[r])
			+ mhd(x[r], y[r], x[b], y[b]) + mhd(x[b], y[b], x[l], y[l]);
	cout << d3;
	for (int i = 4; i <= n; ++i)
		cout << ' ' << d4;
	cout << endl;

	return 0;
}


#include <bits/stdc++.h>
#define pb push_back
#define all(a) a.begin(), a.end()
#define sz(a) (int)a.size()
#define x first
#define y second
#define debug(...) cout<<"["<<#__VA_ARGS__<<": "<<__VA_ARGS__<<"]\n"
using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<int, int>pii;
const int maxn=3e5+100;
const int mod=1e9+7;
int n, X[maxn], Y[maxn];
int main()
{
    ios_base::sync_with_stdio(false), cin.tie(0);
    cin>>n;
    int xmax=-1, xmin=mod, ymax=-1, ymin=mod;
    for(int i=1; i<=n; i++)
    {
        cin>>X[i]>>Y[i];
        xmax=max(xmax, X[i]);
        xmin=min(xmin, X[i]);
        ymax=max(ymax, Y[i]);
        ymin=min(ymin, Y[i]);
    }
    int ans=0;
    for(int i=1; i<=n; i++)
    {
        ans=max(ans, abs(xmax-X[i])+abs(ymax-Y[i]));
        ans=max(ans, abs(xmax-X[i])+abs(ymin-Y[i]));
        ans=max(ans, abs(xmin-X[i])+abs(ymin-Y[i]));
        ans=max(ans, abs(xmin-X[i])+abs(ymax-Y[i]));
    }
    cout<<ans*2<<" ";
    ans=abs(xmax-xmin)+abs(ymax-ymin);
    for(int i=4; i<=n; i++)
        cout<<ans*2<<" ";
    return 0;
}


#include <bits/stdc++.h>
#define pb push_back
#define all(a) a.begin(), a.end()
#define sz(a) (int)a.size()
#define x first
#define y second
#define debug(...) cout<<"["<<#__VA_ARGS__<<": "<<__VA_ARGS__<<"]\n"
using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<int, int>pii;
const int maxn=3e5+100;
const int mod=1e9+7;
int n, X[maxn], Y[maxn];
int main()
{
    ios_base::sync_with_stdio(false), cin.tie(0);
    cin>>n;
    int xmax=-mod, xmin=mod, ymax=-mod, ymin=mod;
    for(int i=1; i<=n; i++)
    {
        cin>>X[i]>>Y[i];
        xmax=max(xmax, X[i]);
        xmin=min(xmin, X[i]);
        ymax=max(ymax, Y[i]);
        ymin=min(ymin, Y[i]);
    }
    int ans=0;
    for(int i=1; i<=n; i++)
    {
        ans=max(ans, abs(xmax-X[i])+abs(ymax-Y[i]));
        ans=max(ans, abs(xmax-X[i])+abs(ymin-Y[i]));
        ans=max(ans, abs(xmin-X[i])+abs(ymin-Y[i]));
        ans=max(ans, abs(xmin-X[i])+abs(ymax-Y[i]));
    }
    cout<<ans*2<<" ";
    ans=abs(xmax-xmin)+abs(ymax-ymin);
    for(int i=4; i<=n; i++)
        cout<<ans*2<<" ";
    return 0;
}


#include <bits/stdc++.h>
using namespace std;
#define ft                          first
#define nd                          second
#define int                         long long
#define forn(i, a, b)               for(int i=a; i<=b; ++i)
#define ford(i, a, b)               for(int i=a; i>=b; --i)
#define repn(i, a, b)               for(int i=a; i <b; ++i)
#define repd(i, a, b)               for(int i=(int)a-1; i >= b; --i)
typedef pair<int,int> ii;
const int N = 1e5 +10;
int n;
struct Point
{
    int x, y;
    void read() { cin >> x >> y; }
    bool operator < (const Point& rhs) const
    {
        if (rhs.x != this->x) return this->x < rhs.x;
        return this->y < rhs.y;
    }
} point[N];
bool compare(Point a, Point b)
{
    if (a.y != b.y) return a.y > b.y;
    return a.x > b.x;
}
int get(Point a, Point b, Point c)
{
    int mxx, mnx, mxy, mny;
    mxx = mnx = a.x;
    mxy = mny = a.y;
    mxx = max(mxx, max(b.x, c.x));
    mnx = min(mnx, min(b.x, c.x));
    mxy = max(mxy, max(b.y, c.y));
    mny = min(mny, min(b.y, c.y));
    return mxx+mxy-mnx-mny;
}
main()
{
#ifndef ONLINE_JUDGE
    freopen("C.inp", "r", stdin);
    freopen("C.out", "w", stdout);
#endif // ONLINE_JUDGE
    ios::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
    cin >> n;
    forn(i, 1, n) point[i].read();
    int mnx, mxx, mny, mxy;
    mnx = mxx = mxy = mny = 1;
    forn(i, 1, n)
    {
        if (point[mnx].x > point[i].x) mnx = i;
        if (point[mxx].x < point[i].x) mxx = i;
        if (point[mny].y > point[i].y) mny = i;
        if (point[mxy].y < point[i].y) mxy = i;
    }
    vector<Point> v;
    int ans = 0, upf = 2 * (point[mxy].y + point[mxx].x - point[mny].y - point[mnx].x);
    //cout << mnx << ' ' << mxx << ' ' << mny << ' ' << mxy << '\n';
    sort(point+1, point+n +1);
    forn(i, 0, 1) v.push_back(point[i]);
    forn(i, n-1, n) v.push_back(point[i]);
    sort(point+1, point+n +1, compare);
    forn(i, 0, 1) v.push_back(point[i]);
    forn(i, n-1, n) v.push_back(point[i]);
    repn(i, 0, v.size()) repn(j, i+1, v.size()) repn(k, j+1, v.size())
        ans = max(ans, get(v[i], v[j], v[k]));
    cout << ans * 2 << ' ';
    forn(i, 4, n) cout << upf << ' ';
    return 0;
}


#include <bits/stdc++.h>
using namespace std;
#define ft                          first
#define nd                          second
#define int                         long long
#define forn(i, a, b)               for(int i=a; i<=b; ++i)
#define ford(i, a, b)               for(int i=a; i>=b; --i)
#define repn(i, a, b)               for(int i=a; i <b; ++i)
#define repd(i, a, b)               for(int i=(int)a-1; i >= b; --i)
typedef pair<int,int> ii;
const int N = 3e5 +10;
int n;
struct Point
{
    int x, y;
    void read() { cin >> x >> y; }
    bool operator < (const Point& rhs) const
    {
        if (rhs.x != this->x) return this->x < rhs.x;
        return this->y < rhs.y;
    }
} point[N];
bool compare(Point a, Point b)
{
    if (a.y != b.y) return a.y < b.y;
    return a.x < b.x;
}
int get(Point a, Point b, Point c)
{
    int mxx, mnx, mxy, mny;
    mxx = mnx = a.x;
    mxy = mny = a.y;
    mxx = max(mxx, max(b.x, c.x));
    mnx = min(mnx, min(b.x, c.x));
    mxy = max(mxy, max(b.y, c.y));
    mny = min(mny, min(b.y, c.y));
    return mxx+mxy-mnx-mny;
}
main()
{
#ifndef ONLINE_JUDGE
    freopen("C.inp", "r", stdin);
    freopen("C.out", "w", stdout);
#endif // ONLINE_JUDGE
    ios::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
    cin >> n;
    forn(i, 1, n) point[i].read();
    int mnx, mxx, mny, mxy;
    mnx = mxx = mxy = mny = 1;
    forn(i, 1, n)
    {
        if (point[mnx].x > point[i].x) mnx = i;
        if (point[mxx].x < point[i].x) mxx = i;
        if (point[mny].y > point[i].y) mny = i;
        if (point[mxy].y < point[i].y) mxy = i;
    }
    vector<ii> v;
    int ans = 0, upf = 2 * (point[mxy].y + point[mxx].x - point[mny].y - point[mnx].x);
    v.push_back({mnx, mny});
    v.push_back({mnx, mxy});
    v.push_back({mxx, mny});
    v.push_back({mxx, mxy});
    for(auto ss: v) forn(i, 1, n) ans = max(ans, get(point[ss.ft], point[ss.nd], point[i]));
    cout << ans * 2 << ' ';
    forn(i, 4, n) cout << upf << ' ';
    return 0;
}


#include <bits/stdc++.h>
using namespace std;
#define ft                          first
#define nd                          second
#define int                         long long
#define forn(i, a, b)               for(int i=a; i<=b; ++i)
#define ford(i, a, b)               for(int i=a; i>=b; --i)
#define repn(i, a, b)               for(int i=a; i <b; ++i)
#define repd(i, a, b)               for(int i=(int)a-1; i >= b; --i)
typedef pair<int,int> ii;
const int N = 1e5 +10;
int n;
struct Point
{
    int x, y;
    void read() { cin >> x >> y; }
} point[N];
int get(Point a, Point b, Point c)
{
    int mxx, mnx, mxy, mny;
    mxx = mnx = a.x;
    mxy = mny = a.y;
    mxx = max(mxx, max(b.x, c.x));
    mnx = min(mnx, min(b.x, c.x));
    mxy = max(mxy, max(b.y, c.y));
    mny = min(mny, min(b.y, c.y));
    return mxx+mxy-mnx-mny;
}
main()
{
#ifndef ONLINE_JUDGE
    freopen("C.inp", "r", stdin);
    freopen("C.out", "w", stdout);
#endif // ONLINE_JUDGE
    ios::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
    cin >> n;
    forn(i, 1, n) point[i].read();
    int mnx, mxx, mny, mxy;
    mnx = mxx = mxy = mny = 1;
    forn(i, 1, n)
    {
        if (point[mnx].x > point[i].x) mnx = i;
        if (point[mxx].x < point[i].x) mxx = i;
        if (point[mny].y > point[i].y) mny = i;
        if (point[mxy].y < point[i].y) mxy = i;
    }
    vector<int> v;
    v.push_back(mnx);
    v.push_back(mxx);
    v.push_back(mny);
    v.push_back(mxy);
    int ans = 0;
    repn(i, 0, 4) repn(j, i+1, 4) repn(k, j+1, 4)
        ans = max(ans, get(point[v[i]], point[v[j]], point[v[k]]));
    cout << ans * 2 << ' ';
    forn(i, 4, n) cout << 2 * (point[mxy].y + point[mxx].x - point[mny].y - point[mnx].x) << ' ';
    return 0;
}


#include <bits/stdc++.h>
using namespace std;
#define ft                          first
#define nd                          second
#define int                         long long
#define forn(i, a, b)               for(int i=a; i<=b; ++i)
#define ford(i, a, b)               for(int i=a; i>=b; --i)
#define repn(i, a, b)               for(int i=a; i <b; ++i)
#define repd(i, a, b)               for(int i=(int)a-1; i >= b; --i)
typedef pair<int,int> ii;
const int N = 1e5 +10;
int n;
struct Point
{
    int x, y;
    void read() { cin >> x >> y; }
    bool operator < (const Point& rhs) const
    {
        if (rhs.x != this->x) return this->x < rhs.x;
        return this->y < rhs.y;
    }
} point[N];
bool compare(Point a, Point b)
{
    if (a.y != b.y) return a.y < b.y;
    return a.x < b.x;
}
int get(Point a, Point b, Point c)
{
    int mxx, mnx, mxy, mny;
    mxx = mnx = a.x;
    mxy = mny = a.y;
    mxx = max(mxx, max(b.x, c.x));
    mnx = min(mnx, min(b.x, c.x));
    mxy = max(mxy, max(b.y, c.y));
    mny = min(mny, min(b.y, c.y));
    return mxx+mxy-mnx-mny;
}
main()
{
#ifndef ONLINE_JUDGE
    freopen("C.inp", "r", stdin);
    freopen("C.out", "w", stdout);
#endif // ONLINE_JUDGE
    ios::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
    cin >> n;
    forn(i, 1, n) point[i].read();
    int mnx, mxx, mny, mxy;
    mnx = mxx = mxy = mny = 1;
    forn(i, 1, n)
    {
        if (point[mnx].x > point[i].x) mnx = i;
        if (point[mxx].x < point[i].x) mxx = i;
        if (point[mny].y > point[i].y) mny = i;
        if (point[mxy].y < point[i].y) mxy = i;
    }
    vector<ii> v;
    int ans = 0, upf = 2 * (point[mxy].y + point[mxx].x - point[mny].y - point[mnx].x);
    v.push_back({mnx, mny});
    v.push_back({mnx, mxy});
    v.push_back({mxx, mny});
    v.push_back({mxx, mxy});
    for(auto ss: v) forn(i, 1, n) ans = max(ans, get(point[ss.ft], point[ss.nd], point[i]));
    cout << ans * 2 << ' ';
    forn(i, 4, n) cout << upf << ' ';
    return 0;
}


#include <bits/stdc++.h>
using namespace std;
#define ft                          first
#define nd                          second
#define int                         long long
#define forn(i, a, b)               for(int i=a; i<=b; ++i)
#define ford(i, a, b)               for(int i=a; i>=b; --i)
#define repn(i, a, b)               for(int i=a; i <b; ++i)
#define repd(i, a, b)               for(int i=(int)a-1; i >= b; --i)
typedef pair<int,int> ii;
const int N = 1e5 +10;
int n;
struct Point
{
    int x, y;
    void read() { cin >> x >> y; }
    bool operator < (const Point& rhs) const
    {
        if (rhs.x != this->x) return this->x < rhs.x;
        return this->y < rhs.y;
    }
} point[N];
bool compare(Point a, Point b)
{
    if (a.y != b.y) return a.y < b.y;
    return a.x < b.x;
}
int get(Point a, Point b, Point c)
{
    int mxx, mnx, mxy, mny;
    mxx = mnx = a.x;
    mxy = mny = a.y;
    mxx = max(mxx, max(b.x, c.x));
    mnx = min(mnx, min(b.x, c.x));
    mxy = max(mxy, max(b.y, c.y));
    mny = min(mny, min(b.y, c.y));
    return mxx+mxy-mnx-mny;
}
main()
{
#ifndef ONLINE_JUDGE
    freopen("C.inp", "r", stdin);
    freopen("C.out", "w", stdout);
#endif // ONLINE_JUDGE
    ios::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
    cin >> n;
    forn(i, 1, n) point[i].read();
    int mnx, mxx, mny, mxy;
    mnx = mxx = mxy = mny = 1;
    forn(i, 1, n)
    {
        if (point[mnx].x > point[i].x) mnx = i;
        if (point[mxx].x < point[i].x) mxx = i;
        if (point[mny].y > point[i].y) mny = i;
        if (point[mxy].y < point[i].y) mxy = i;
    }
    vector<Point> v;
    int ans = 0, upf = 2 * (point[mxy].y + point[mxx].x - point[mny].y - point[mnx].x);
    sort(point+1, point+n +1);
    //forn(i, 1, n) cout << point[i].x << ' ' << point[i].y << '\n';
    forn(i, 1, 2) v.push_back(point[i]);
    forn(i, n-1, n) v.push_back(point[i]);
    sort(point+1, point+n +1, compare);
    //forn(i, 1, n) cout << point[i].x << ' ' << point[i].y << '\n';
    forn(i, 1, 2) v.push_back(point[i]);
    forn(i, n-1, n) v.push_back(point[i]);
    repn(i, 0, v.size()) repn(j, i+1, v.size()) repn(k, j+1, v.size())
    {
        ans = max(ans, get(v[i], v[j], v[k]));
        //if (get(v[i], v[j], v[k]) == 8) cout << v[i].x << ' ' << v[i].y << ' ' << v[j].x << ' ' << v[j].y << ' ' << v[k].x << ' ' << v[k].y << '\n';
    }
    cout << ans * 2 << ' ';
    forn(i, 4, n) cout << upf << ' ';
    return 0;
}


#include<bits/stdc++.h>
using namespace std;
#define maxn 300020
#define rep(i,l,r) for(register int i = l ; i <= r ; i++)
#define repd(i,r,l) for(register int i = r ; i >= l ; i--)
#define rvc(i,S) for(register int i = 0 ; i < (int)S.size() ; i++)
#define rvcd(i,S) for(register int i = ((int)S.size()) - 1 ; i >= 0 ; i--)
#define fore(i,x)for (register int i = head[x] ; i ; i = e[i].next)
#define pb push_back
#define prev prev_
#define stack stack_
#define inf 0x3f3f3f3f

typedef long long ll;
struct node{
	int x,y;
}dt[maxn];
struct node2{
	int d,id;
	bool operator < (node2 a)const{
		return d > a.d;
	}
}dt2[maxn];
int n;
set <int> s;
set <int>::iterator it,it2;

inline int getdis(node p1,node p2){ return abs(p1.x - p2.x) + abs(p1.y - p2.y); }
int getval(node p,node p1,node p2){
	return getdis(p,p1) + getdis(p,p2) - getdis(p1,p2);
}
inline int calc(int i){
	it = s.lower_bound(i);
	if ( it == s.end() ) it-- , it2 = s.begin();
	else if ( it == s.begin() ) it2 = s.end();
	else{
		it2 = it--;
	}
	return getval(dt[i],dt[(*it)],dt[(*it2)]);
}
int main(){
	scanf("%d",&n);
	int mxx = -inf , mnx = inf , mny = inf , mxy = -inf;
	rep(i,1,n){
		scanf("%d %d",&dt[i].x,&dt[i].y);
		mxx = max(dt[i].x,mxx);
		mnx = min(dt[i].x,mnx);
		mxy = max(dt[i].y,mxy);
		mny = min(dt[i].y,mny);
	}
	dt[0] = dt[n] , dt[n + 1] = dt[1];
	rep(i,1,n){
		dt2[i].d = getval(dt[i],dt[i - 1],dt[i + 1]);
		dt2[i].id = i;
	}
	sort(dt2 + 1,dt2 + n + 1);
	int ans = getdis(dt[dt2[1].id],dt[dt2[2].id]) + getdis(dt[dt2[1].id],dt[dt2[3].id]) + getdis(dt[dt2[2].id],dt[dt2[3].id]);
	s.insert(dt2[1].id) , s.insert(dt2[2].id) , s.insert(dt2[3].id);
	printf("%d ",ans);
	rep(k,4,n){
		printf("%d ",(mxx - mnx + mxy - mny) * 2);
	}
}


#include<bits/stdc++.h>
using namespace std;
#define maxn 300020
#define rep(i,l,r) for(register int i = l ; i <= r ; i++)
#define repd(i,r,l) for(register int i = r ; i >= l ; i--)
#define rvc(i,S) for(register int i = 0 ; i < (int)S.size() ; i++)
#define rvcd(i,S) for(register int i = ((int)S.size()) - 1 ; i >= 0 ; i--)
#define fore(i,x)for (register int i = head[x] ; i ; i = e[i].next)
#define pb push_back
#define prev prev_
#define stack stack_
#define inf 0x3f3f3f3f

typedef long long ll;
struct node{
	int x,y;
}dt[maxn];
struct node2{
	int d,id;
	bool operator < (node2 a)const{
		return d > a.d;
	}
}dt2[maxn];
int n;
set <int> s;
set <int>::iterator it,it2;

inline int getdis(node p1,node p2){ return abs(p1.x - p2.x) + abs(p1.y - p2.y); }
int getval(node p,node p1,node p2){
	return getdis(p,p1) + getdis(p,p2) - getdis(p1,p2);
}
inline int calc(int i){
	it = s.lower_bound(i);
	if ( it == s.end() ) it-- , it2 = s.begin();
	else if ( it == s.begin() ) it2 = s.end();
	else{
		it2 = it--;
	}
	return getval(dt[i],dt[(*it)],dt[(*it2)]);
}
int main(){
	scanf("%d",&n);
	rep(i,1,n){
		scanf("%d %d",&dt[i].x,&dt[i].y);
	}
	dt[0] = dt[n] , dt[n + 1] = dt[1];
	rep(i,1,n){
		dt2[i].d = getval(dt[i],dt[i - 1],dt[i + 1]);
		dt2[i].id = i;
	}
	sort(dt2 + 1,dt2 + n + 1);
	int ans = getdis(dt[dt2[1].id],dt[dt2[2].id]) + getdis(dt[dt2[1].id],dt[dt2[3].id]) + getdis(dt[dt2[2].id],dt[dt2[3].id]);
	s.insert(dt2[1].id) , s.insert(dt2[2].id) , s.insert(dt2[3].id);
	printf("%d ",ans);
	rep(k,4,n){
		ans += calc(dt2[k].id);
		s.insert(dt2[k].id);
		printf("%d ",ans);
	}
}


#include<bits/stdc++.h>
using namespace std;
#define maxn 300020
#define rep(i,l,r) for(register int i = l ; i <= r ; i++)
#define repd(i,r,l) for(register int i = r ; i >= l ; i--)
#define rvc(i,S) for(register int i = 0 ; i < (int)S.size() ; i++)
#define rvcd(i,S) for(register int i = ((int)S.size()) - 1 ; i >= 0 ; i--)
#define fore(i,x)for (register int i = head[x] ; i ; i = e[i].next)
#define pb push_back
#define prev prev_
#define stack stack_
#define inf 0x3f3f3f3f

typedef long long ll;
struct node{
	int x,y;
}dt[maxn];
struct node2{
	int d,id;
	bool operator < (node2 a)const{
		return d > a.d;
	}
}dt2[maxn];
int n;
set <int> s;
set <int>::iterator it,it2;

inline int getdis(node p1,node p2){ return abs(p1.x - p2.x) + abs(p1.y - p2.y); }
int getval(node p,node p1,node p2){
	return getdis(p,p1) + getdis(p,p2) - getdis(p1,p2);
}
inline int calc(int i){
	it = s.lower_bound(i);
	if ( it == s.end() ) it-- , it2 = s.begin();
	else if ( it == s.begin() ) it2 = s.end();
	else{
		it2 = it--;
	}
	return getval(dt[i],dt[(*it)],dt[(*it2)]);
}

int main(){
	scanf("%d",&n);
	int mxx = -inf , mnx = inf , mny = inf , mxy = -inf;
	rep(i,1,n){
		scanf("%d %d",&dt[i].x,&dt[i].y);
		mxx = max(dt[i].x,mxx);
		mnx = min(dt[i].x,mnx);
		mxy = max(dt[i].y,mxy);
		mny = min(dt[i].y,mny);
	}
	dt[0] = dt[n] , dt[n + 1] = dt[1];
	rep(i,1,n){
		dt2[i].d = getval(dt[i],dt[i - 1],dt[i + 1]);
		dt2[i].id = i;
	}
	int ans = 0;
	rep(i,1,n){
		int x = dt[i].x , y = dt[i].y;
		ans = max(ans,(mxy - y + mxx - x) * 2);
		ans = max(ans,(mxy - y + x - mnx) * 2);
		ans = max(ans,(y - mny + x - mnx) * 2);
		ans = max(ans,(y - mny + mxx - x) * 2);
	}
	printf("%d ",ans);
	rep(k,4,n){
		printf("%d ",(mxx - mnx + mxy - mny) * 2);
	}
}


#include <bits/stdc++.h>

#define pb push_back
#define mp make_pair
#define F first
#define S second
#define all(x) x.begin(), x.end()
#define debug(x)  cerr << #x << " = " << x << endl
using namespace std;

typedef long long ll;
typedef long double ld;
typedef string str;
typedef pair<ll, ll> pll;

const ld PI = 3.14159265359;

const ll MOD = (ll) 998244353ll;
const ll MAXN = (ll) 2e5 + 10;
const ll INF = (ll) 1e15;
const ld EPS = (ld) 1e-8;

pll a[MAXN];

ll d(ll i, ll j){
	return abs(a[i].F - a[j].F) + abs(a[i].S - a[j].S);
}

int main(){
    ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	ll n;
	cin >> n;
	ll minx = INF;
	ll maxx = -INF;
	ll miny = INF;
	ll maxy = -INF;
	ll minxi = -1;
	ll maxxi = -1;
	ll minyi = -1;
	ll maxyi = -1;

	for(int i = 0;i<n;i++){
		cin >> a[i].F >> a[i].S;
		if(a[i].F < minx){
			minx = a[i].F;
			minxi = i;
		}
		if(a[i].F > maxx){
			maxx = a[i].F;
			maxxi = i;
		}
		if(a[i].S > maxy){
			maxy = a[i].S;
			maxyi = i;
		}
		if(a[i].F < miny){
			miny = a[i].S;
			minyi = i;
		}
	}
	if(n == 3){
		return cout << d(0,1)+d(1,2)+d(2,0), 0;
	}

	ll f = 0;
	ll ind[4] = {minxi, maxxi,minyi,maxyi};
	for(int i = 0;i<4;i++){
		for(int j = 0;j<4;j++){
			if((ind[i] == ind[j]) and (i != j)) f = 1;
		}
	}
	ll a1 = minxi;
	ll a2 = maxyi;
	ll a3 = maxxi;
	ll a4 = minyi;
	ll ans = d(minxi, minyi) + d(minxi,maxyi) + d(maxxi,minyi) + d(maxxi,maxyi);
	ll ans2 = max(max(d(a1,a2) + d(a2,a3) + d(a3,a1), d(a1,a2) + d(a2,a4) + d(a4,a1)),  max(d(a1,a3) + d(a3,a4) + d(a4,a1), d(a2,a3) + d(a3,a4) + d(a4,a2)));
	cout << ans2 << " ";
	for(int i = 0;i < n-3; i++) cout << ans << " ";
	return 0;
}

/*

                                 ____              ,----..               ,----..
   ,---,                       ,'  , `.           /   /   \             /   /   \
  '  .' \                   ,-+-,.' _ |          /   .     :           /   .     :
 /  ;    '.              ,-+-. ;   , ||         .   /   ;.  \         .   /   ;.  \
:  :       \            ,--.'|'   |  ;|        .   ;   /  ` ;        .   ;   /  ` ;
:  |   /\   \          |   |  ,', |  ':        ;   |  ; \ ; |        ;   |  ; \ ; |
|  :  ' ;.   :         |   | /  | |  ||        |   :  | ; | '        |   :  | ; | '
|  |  ;/  \   \        '   | :  | :  |,        .   |  ' ' ' :        .   |  ' ' ' :
'  :  | \  \ ,'        ;   . |  ; |--'         '   ;  \; /  |        '   ;  \; /  |
|  |  '  '--'          |   : |  | ,             \   \  ',  /          \   \  ',  /
|  :  :                |   : '  |/               ;   :    /            ;   :    /
|  | ,'                ;   | |`-'                 \   \ .'              \   \ .'
`--''                  |   ;/                      `---`                 `---`
                       '---'

*/


#include <bits/stdc++.h>

#define pb push_back
#define mp make_pair
#define F first
#define S second
#define all(x) x.begin(), x.end()
#define debug(x)  cerr << #x << " = " << x << endl
using namespace std;

typedef long long ll;
typedef long double ld;
typedef string str;
typedef pair<ll, ll> pll;

const ld PI = 3.14159265359;

const ll MOD = (ll) 998244353ll;
const ll MAXN = (ll) 3e5 + 10;
const ll INF = (ll) 1e15;
const ld EPS = (ld) 1e-8;

pll a[MAXN];

ll d(ll i, ll j){
	return abs(a[i].F - a[j].F) + abs(a[i].S - a[j].S);
}
ll d3(ll i, ll j, ll k){
	return d(i,j) + d(j,k) + d(k,i);
}

vector<ll> g;
int main(){
    ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	ll n;
	cin >> n;
	ll minx = INF;
	ll maxx = -INF;
	ll miny = INF;
	ll maxy = -INF;
	ll minxi = 0;
	ll maxxi = 0;
	ll minyi = 0;
	ll maxyi = 0;
	debug(abs(-INF-INF));
	for(int i = 0;i<n;i++){
		cin >> a[i].F >> a[i].S;
		if(a[i].F < minx){
			minx = a[i].F;
			minxi = i;
		}
		if(a[i].F > maxx){
			maxx = a[i].F;
			maxxi = i;
		}
		if(a[i].S > maxy){
			maxy = a[i].S;
			maxyi = i;
		}
		if(a[i].S < miny){
			miny = a[i].S;
			minyi = i;
		}
	}

	if(n == 3){
		return cout << d(0,1)+d(1,2)+d(2,0), 0;
	}

	for(int i = 0; i < n; i++){
		if(a[i].F == minx) g.pb(i);
		if(a[i].F == maxx) g.pb(i);
		if(a[i].S == miny) g.pb(i);
		if(a[i].S == maxy) g.pb(i);
	}
	/*ll f = 0;
	ll ind[4] = {minxi, maxxi,minyi,maxyi};
	for(int i = 0;i<4;i++){
		for(int j = 0;j<4;j++){
			if((ind[i] == ind[j]) and (i != j)) f = 1;
		}
	}*/
	ll ans2 = 0, an;
	ll t = (ll)g.size();
	debug(t);
	for(int i = 0;i<t;i++){
		for(int j = i + 1; j < t; j++){
			for(int k = j + 1; k < t;k++){

				ans2 = max(ans2, d(g[i],g[j]) + d(g[j],g[k]) + d(g[k],g[i]));
			}
		}
	}
	for(int i = 0;i<n;i++){
		an = max(d3(i,maxxi,maxyi), d3(i, maxxi, minyi));
		an = max(an ,max(d3(i,minxi,maxyi), d3(i, minxi, maxyi)));
		//an = 0;
		for(int k = 0;k<t;k++){
			for(int j = k + 1; j < t; j++){
				an = max(an , d3(i, g[k],g[j]));
			}
		}
		ans2 = max(ans2, an);
	}

	//ll a1 = minxi;
	//ll a2 = maxyi;

	//ll a3 = maxxi;
	//ll a4 = minyi;
	//ll ans = d(minxi, minyi) + d(minxi,maxyi) + d(maxxi,minyi) + d(maxxi,maxyi);
	ll ans = 2ll * ((maxx - minx) + (maxy-miny));
	//ll ans2 = max(max(d(a1,a2) + d(a2,a3) + d(a3,a1), d(a1,a2) + d(a2,a4) + d(a4,a1)),  max(d(a1,a3) + d(a3,a4) + d(a4,a1), d(a2,a3) + d(a3,a4) + d(a4,a2)));
	cout << ans2 << " ";
	for(int i = 0;i < n-3; i++) cout << ans << " ";
	return 0;
}

/*
5
0 0
1 -2
0 -3
-10 -2
-10 -1
                                 ____              ,----..               ,----..
   ,---,                       ,'  , `.           /   /   \             /   /   \
  '  .' \                   ,-+-,.' _ |          /   .     :           /   .     :
 /  ;    '.              ,-+-. ;   , ||         .   /   ;.  \         .   /   ;.  \
:  :       \            ,--.'|'   |  ;|        .   ;   /  ` ;        .   ;   /  ` ;
:  |   /\   \          |   |  ,', |  ':        ;   |  ; \ ; |        ;   |  ; \ ; |
|  :  ' ;.   :         |   | /  | |  ||        |   :  | ; | '        |   :  | ; | '
|  |  ;/  \   \        '   | :  | :  |,        .   |  ' ' ' :        .   |  ' ' ' :
'  :  | \  \ ,'        ;   . |  ; |--'         '   ;  \; /  |        '   ;  \; /  |
|  |  '  '--'          |   : |  | ,             \   \  ',  /          \   \  ',  /
|  :  :                |   : '  |/               ;   :    /            ;   :    /
|  | ,'                ;   | |`-'                 \   \ .'              \   \ .'
`--''                  |   ;/                      `---`                 `---`
                       '---'

*/


#include <bits/stdc++.h>

#define pb push_back
#define mp make_pair
#define F first
#define S second
#define all(x) x.begin(), x.end()
#define debug(x)  cerr << #x << " = " << x << endl
using namespace std;

typedef long long ll;
typedef long double ld;
typedef string str;
typedef pair<ll, ll> pll;

const ld PI = 3.14159265359;

const ll MOD = (ll) 998244353ll;
const ll MAXN = (ll) 3e5 + 10;
const ll INF = (ll) 1e15;
const ld EPS = (ld) 1e-8;

pll a[MAXN];

ll d(ll i, ll j){
	return abs(a[i].F - a[j].F) + abs(a[i].S - a[j].S);
}
vector<ll> g;
int main(){
    ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	ll n;
	cin >> n;
	ll minx = INF;
	ll maxx = -INF;
	ll miny = INF;
	ll maxy = -INF;
	ll minxi = -1;
	ll maxxi = -1;
	ll minyi = -1;
	ll maxyi = -1;

	for(int i = 0;i<n;i++){
		cin >> a[i].F >> a[i].S;
		if(a[i].F < minx){
			minx = a[i].F;
			minxi = i;
		}
		if(a[i].F > maxx){
			maxx = a[i].F;
			maxxi = i;
		}
		if(a[i].S > maxy){
			maxy = a[i].S;
			maxyi = i;
		}
		if(a[i].S < miny){
			miny = a[i].S;
			minyi = i;
		}
	}
	if(n == 3){
		return cout << d(0,1)+d(1,2)+d(2,0), 0;
	}
	for(int i = 0; i < n; i++){
		if(a[i].F == minx) g.pb(i);
		if(a[i].F == maxx) g.pb(i);
		if(a[i].S == miny) g.pb(i);
		if(a[i].S == maxy) g.pb(i);
	}
	/*ll f = 0;
	ll ind[4] = {minxi, maxxi,minyi,maxyi};
	for(int i = 0;i<4;i++){
		for(int j = 0;j<4;j++){
			if((ind[i] == ind[j]) and (i != j)) f = 1;
		}
	}*/
	ll ans2 = 0;
	ll t = (ll)g.size();
	for(int i = 0;i<t;i++){
		for(int j = i + 1; j < t; j++){
			for(int k = j + 1;k<t;k++){
				ans2 = max(ans2, d(g[i],g[j]) + d(g[j],g[k]) + d(g[k],g[i]));
			}
		}
	}

	//ll a1 = minxi;
	//ll a2 = maxyi;
	//ll a3 = maxxi;
	//ll a4 = minyi;
	//ll ans = d(minxi, minyi) + d(minxi,maxyi) + d(maxxi,minyi) + d(maxxi,maxyi);
	ll ans = 2 * ((maxx - minx) + (maxy-miny));
	//ll ans2 = max(max(d(a1,a2) + d(a2,a3) + d(a3,a1), d(a1,a2) + d(a2,a4) + d(a4,a1)),  max(d(a1,a3) + d(a3,a4) + d(a4,a1), d(a2,a3) + d(a3,a4) + d(a4,a2)));
	cout << ans2 << " ";
	for(int i = 0;i < n-3; i++) cout << ans << " ";
	return 0;
}

/*

                                 ____              ,----..               ,----..
   ,---,                       ,'  , `.           /   /   \             /   /   \
  '  .' \                   ,-+-,.' _ |          /   .     :           /   .     :
 /  ;    '.              ,-+-. ;   , ||         .   /   ;.  \         .   /   ;.  \
:  :       \            ,--.'|'   |  ;|        .   ;   /  ` ;        .   ;   /  ` ;
:  |   /\   \          |   |  ,', |  ':        ;   |  ; \ ; |        ;   |  ; \ ; |
|  :  ' ;.   :         |   | /  | |  ||        |   :  | ; | '        |   :  | ; | '
|  |  ;/  \   \        '   | :  | :  |,        .   |  ' ' ' :        .   |  ' ' ' :
'  :  | \  \ ,'        ;   . |  ; |--'         '   ;  \; /  |        '   ;  \; /  |
|  |  '  '--'          |   : |  | ,             \   \  ',  /          \   \  ',  /
|  :  :                |   : '  |/               ;   :    /            ;   :    /
|  | ,'                ;   | |`-'                 \   \ .'              \   \ .'
`--''                  |   ;/                      `---`                 `---`
                       '---'

*/


#include <bits/stdc++.h>

#define pb push_back
#define mp make_pair
#define F first
#define S second
#define all(x) x.begin(), x.end()
#define debug(x)  cerr << #x << " = " << x << endl
using namespace std;

typedef long long ll;
typedef long double ld;
typedef string str;
typedef pair<ll, ll> pll;

const ld PI = 3.14159265359;

const ll MOD = (ll) 998244353ll;
const ll MAXN = (ll) 3e5 + 10;
const ll INF = (ll) 1e15;
const ld EPS = (ld) 1e-8;

pll a[MAXN];

ll d(ll i, ll j){
	return abs(a[i].F - a[j].F) + abs(a[i].S - a[j].S);
}
vector<ll> g;
int main(){
    ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	ll n;
	cin >> n;
	ll minx = INF;
	ll maxx = -INF;
	ll miny = INF;
	ll maxy = -INF;
	ll minxi = 0;
	ll maxxi = 0;
	ll minyi = 0;
	ll maxyi = 0;

	for(int i = 0;i<n;i++){
		cin >> a[i].F >> a[i].S;
		if(a[i].F < minx){
			minx = a[i].F;
			minxi = i;
		}
		if(a[i].F > maxx){
			maxx = a[i].F;
			maxxi = i;
		}
		if(a[i].S > maxy){
			maxy = a[i].S;
			maxyi = i;
		}
		if(a[i].S < miny){
			miny = a[i].S;
			minyi = i;
		}
	}

	if(n == 3){
		return cout << d(0,1)+d(1,2)+d(2,0), 0;
	}

	for(int i = 0; i < n; i++){
		if(a[i].F == minx) g.pb(i);
		if(a[i].F == maxx) g.pb(i);
		if(a[i].S == miny) g.pb(i);
		if(a[i].S == maxy) g.pb(i);
	}
	/*ll f = 0;
	ll ind[4] = {minxi, maxxi,minyi,maxyi};
	for(int i = 0;i<4;i++){
		for(int j = 0;j<4;j++){
			if((ind[i] == ind[j]) and (i != j)) f = 1;
		}
	}*/
	ll ans2 = 0;
	ll t = (ll)g.size();
	debug(t);
	for(int i = 0;i<t;i++){
		for(int j = i + 1; j < t; j++){
			for(int k = j + 1; k < t;k++){
				ans2 = max(ans2, d(g[i],g[j]) + d(g[j],g[k]) + d(g[k],g[i]));
			}
		}
	}

	//ll a1 = minxi;
	//ll a2 = maxyi;
	//ll a3 = maxxi;
	//ll a4 = minyi;
	//ll ans = d(minxi, minyi) + d(minxi,maxyi) + d(maxxi,minyi) + d(maxxi,maxyi);
	ll ans = 2ll * ((maxx - minx) + (maxy-miny));
	//ll ans2 = max(max(d(a1,a2) + d(a2,a3) + d(a3,a1), d(a1,a2) + d(a2,a4) + d(a4,a1)),  max(d(a1,a3) + d(a3,a4) + d(a4,a1), d(a2,a3) + d(a3,a4) + d(a4,a2)));
	cout << ans2 << " ";
	for(int i = 0;i < n-3; i++) cout << ans << " ";
	return 0;
}

/*
5
0 0
1 -2
0 -3
-10 -2
-10 -1
                                 ____              ,----..               ,----..
   ,---,                       ,'  , `.           /   /   \             /   /   \
  '  .' \                   ,-+-,.' _ |          /   .     :           /   .     :
 /  ;    '.              ,-+-. ;   , ||         .   /   ;.  \         .   /   ;.  \
:  :       \            ,--.'|'   |  ;|        .   ;   /  ` ;        .   ;   /  ` ;
:  |   /\   \          |   |  ,', |  ':        ;   |  ; \ ; |        ;   |  ; \ ; |
|  :  ' ;.   :         |   | /  | |  ||        |   :  | ; | '        |   :  | ; | '
|  |  ;/  \   \        '   | :  | :  |,        .   |  ' ' ' :        .   |  ' ' ' :
'  :  | \  \ ,'        ;   . |  ; |--'         '   ;  \; /  |        '   ;  \; /  |
|  |  '  '--'          |   : |  | ,             \   \  ',  /          \   \  ',  /
|  :  :                |   : '  |/               ;   :    /            ;   :    /
|  | ,'                ;   | |`-'                 \   \ .'              \   \ .'
`--''                  |   ;/                      `---`                 `---`
                       '---'

*/


#include <bits/stdc++.h>

#define pb push_back
#define mp make_pair
#define F first
#define S second
#define all(x) x.begin(), x.end()
#define debug(x)  cerr << #x << " = " << x << endl
using namespace std;

typedef long long ll;
typedef long double ld;
typedef string str;
typedef pair<ll, ll> pll;

const ld PI = 3.14159265359;

const ll MOD = (ll) 998244353ll;
const ll MAXN = (ll) 3e5 + 10;
const ll INF = (ll) 1e15;
const ld EPS = (ld) 1e-8;

pll a[MAXN];

ll d(ll i, ll j){
	return abs(a[i].F - a[j].F) + abs(a[i].S - a[j].S);
}
ll d3(ll i, ll j, ll k){
	return d(i,j) + d(j,k) + d(k,i);
}

vector<ll> g;
int main(){
    ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	ll n;
	cin >> n;
	ll minx = INF;
	ll maxx = -INF;
	ll miny = INF;
	ll maxy = -INF;
	ll minxi = 0;
	ll maxxi = 0;
	ll minyi = 0;
	ll maxyi = 0;
	debug(abs(-INF-INF));
	for(int i = 0;i<n;i++){
		cin >> a[i].F >> a[i].S;
		if(a[i].F < minx){
			minx = a[i].F;
			minxi = i;
		}
		if(a[i].F > maxx){
			maxx = a[i].F;
			maxxi = i;
		}
		if(a[i].S > maxy){
			maxy = a[i].S;
			maxyi = i;
		}
		if(a[i].S < miny){
			miny = a[i].S;
			minyi = i;
		}
	}

	if(n == 3){
		return cout << d(0,1)+d(1,2)+d(2,0), 0;
	}

	for(int i = 0; i < n; i++){
		if(a[i].F == minx) g.pb(i);
		if(a[i].F == maxx) g.pb(i);
		if(a[i].S == miny) g.pb(i);
		if(a[i].S == maxy) g.pb(i);
	}
	/*ll f = 0;
	ll ind[4] = {minxi, maxxi,minyi,maxyi};
	for(int i = 0;i<4;i++){
		for(int j = 0;j<4;j++){
			if((ind[i] == ind[j]) and (i != j)) f = 1;
		}
	}*/
	ll ans2 = 0, an;
	ll t = (ll)g.size();
	debug(t);
	for(int i = 0;i<t;i++){
		for(int j = i + 1; j < t; j++){
			for(int k = j + 1; k < t;k++){

				ans2 = max(ans2, d(g[i],g[j]) + d(g[j],g[k]) + d(g[k],g[i]));
			}
		}
	}
	for(int i = 0;i<n;i++){
		an = max(d3(i,maxxi,maxyi), d3(i, maxxi, minyi));
		an = max(an ,max(d3(i,minxi,maxyi), d3(i, minxi, maxyi)));
		ans2 = max(ans2, an);
	}

	//ll a1 = minxi;
	//ll a2 = maxyi;

	//ll a3 = maxxi;
	//ll a4 = minyi;
	//ll ans = d(minxi, minyi) + d(minxi,maxyi) + d(maxxi,minyi) + d(maxxi,maxyi);
	ll ans = 2ll * ((maxx - minx) + (maxy-miny));
	//ll ans2 = max(max(d(a1,a2) + d(a2,a3) + d(a3,a1), d(a1,a2) + d(a2,a4) + d(a4,a1)),  max(d(a1,a3) + d(a3,a4) + d(a4,a1), d(a2,a3) + d(a3,a4) + d(a4,a2)));
	cout << ans2 << " ";
	for(int i = 0;i < n-3; i++) cout << ans << " ";
	return 0;
}

/*
5
0 0
1 -2
0 -3
-10 -2
-10 -1
                                 ____              ,----..               ,----..
   ,---,                       ,'  , `.           /   /   \             /   /   \
  '  .' \                   ,-+-,.' _ |          /   .     :           /   .     :
 /  ;    '.              ,-+-. ;   , ||         .   /   ;.  \         .   /   ;.  \
:  :       \            ,--.'|'   |  ;|        .   ;   /  ` ;        .   ;   /  ` ;
:  |   /\   \          |   |  ,', |  ':        ;   |  ; \ ; |        ;   |  ; \ ; |
|  :  ' ;.   :         |   | /  | |  ||        |   :  | ; | '        |   :  | ; | '
|  |  ;/  \   \        '   | :  | :  |,        .   |  ' ' ' :        .   |  ' ' ' :
'  :  | \  \ ,'        ;   . |  ; |--'         '   ;  \; /  |        '   ;  \; /  |
|  |  '  '--'          |   : |  | ,             \   \  ',  /          \   \  ',  /
|  :  :                |   : '  |/               ;   :    /            ;   :    /
|  | ,'                ;   | |`-'                 \   \ .'              \   \ .'
`--''                  |   ;/                      `---`                 `---`
                       '---'

*/


#include <bits/stdc++.h>

#define pb push_back
#define mp make_pair
#define F first
#define S second
#define all(x) x.begin(), x.end()
#define debug(x)  cerr << #x << " = " << x << endl
using namespace std;

typedef long long ll;
typedef long double ld;
typedef string str;
typedef pair<ll, ll> pll;

const ld PI = 3.14159265359;

const ll MOD = (ll) 998244353ll;
const ll MAXN = (ll) 3e5 + 10;
const ll INF = (ll) 1e15;
const ld EPS = (ld) 1e-8;

pll a[MAXN];

ll d(ll i, ll j){
	return abs(a[i].F - a[j].F) + abs(a[i].S - a[j].S);
}
ll d3(ll i, ll j, ll k){
	return d(i,j) + d(j,k) + d(k,i);
}

vector<ll> g;
int main(){
    ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	ll n;
	cin >> n;
	ll minx = INF;
	ll maxx = -INF;
	ll miny = INF;
	ll maxy = -INF;
	ll minxi = 0;
	ll maxxi = 0;
	ll minyi = 0;
	ll maxyi = 0;
	debug(abs(-INF-INF));
	for(int i = 0;i<n;i++){
		cin >> a[i].F >> a[i].S;
		if(a[i].F < minx){
			minx = a[i].F;
			minxi = i;
		}
		if(a[i].F > maxx){
			maxx = a[i].F;
			maxxi = i;
		}
		if(a[i].S > maxy){
			maxy = a[i].S;
			maxyi = i;
		}
		if(a[i].S < miny){
			miny = a[i].S;
			minyi = i;
		}
	}

	if(n == 3){
		return cout << d(0,1)+d(1,2)+d(2,0), 0;
	}

	for(int i = 0; i < n; i++){
		if(a[i].F == minx) g.pb(i);
		if(a[i].F == maxx) g.pb(i);
		if(a[i].S == miny) g.pb(i);
		if(a[i].S == maxy) g.pb(i);
	}
	/*ll f = 0;
	ll ind[4] = {minxi, maxxi,minyi,maxyi};
	for(int i = 0;i<4;i++){
		for(int j = 0;j<4;j++){
			if((ind[i] == ind[j]) and (i != j)) f = 1;
		}
	}*/
	ll ans2 = 0, an;
	ll t = (ll)g.size();
	debug(t);
	for(int i = 0;i<t;i++){
		for(int j = i + 1; j < t; j++){
			for(int k = j + 1; k < t;k++){

				ans2 = max(ans2, d(g[i],g[j]) + d(g[j],g[k]) + d(g[k],g[i]));
			}
		}
	}
	for(int i = 0;i<n;i++){
		//an = max(d3(i,maxxi,maxyi), d3(i, maxxi, minyi));
		//an = max(an ,max(d3(i,minxi,maxyi), d3(i, minxi, maxyi)));
		an = 0;
		for(int i = 0;i<t;i++){
			for(int j = i + 1; j < t; j++){
				an = max(an , d3(i, g[i],g[j]));
			}
		}
		ans2 = max(ans2, an);
	}

	//ll a1 = minxi;
	//ll a2 = maxyi;

	//ll a3 = maxxi;
	//ll a4 = minyi;
	//ll ans = d(minxi, minyi) + d(minxi,maxyi) + d(maxxi,minyi) + d(maxxi,maxyi);
	ll ans = 2ll * ((maxx - minx) + (maxy-miny));
	//ll ans2 = max(max(d(a1,a2) + d(a2,a3) + d(a3,a1), d(a1,a2) + d(a2,a4) + d(a4,a1)),  max(d(a1,a3) + d(a3,a4) + d(a4,a1), d(a2,a3) + d(a3,a4) + d(a4,a2)));
	cout << ans2 << " ";
	for(int i = 0;i < n-3; i++) cout << ans << " ";
	return 0;
}

/*
5
0 0
1 -2
0 -3
-10 -2
-10 -1
                                 ____              ,----..               ,----..
   ,---,                       ,'  , `.           /   /   \             /   /   \
  '  .' \                   ,-+-,.' _ |          /   .     :           /   .     :
 /  ;    '.              ,-+-. ;   , ||         .   /   ;.  \         .   /   ;.  \
:  :       \            ,--.'|'   |  ;|        .   ;   /  ` ;        .   ;   /  ` ;
:  |   /\   \          |   |  ,', |  ':        ;   |  ; \ ; |        ;   |  ; \ ; |
|  :  ' ;.   :         |   | /  | |  ||        |   :  | ; | '        |   :  | ; | '
|  |  ;/  \   \        '   | :  | :  |,        .   |  ' ' ' :        .   |  ' ' ' :
'  :  | \  \ ,'        ;   . |  ; |--'         '   ;  \; /  |        '   ;  \; /  |
|  |  '  '--'          |   : |  | ,             \   \  ',  /          \   \  ',  /
|  :  :                |   : '  |/               ;   :    /            ;   :    /
|  | ,'                ;   | |`-'                 \   \ .'              \   \ .'
`--''                  |   ;/                      `---`                 `---`
                       '---'

*/


#include <bits/stdc++.h>

#define pb push_back
#define mp make_pair
#define F first
#define S second
#define all(x) x.begin(), x.end()
#define debug(x)  cerr << #x << " = " << x << endl
using namespace std;

typedef long long ll;
typedef long double ld;
typedef string str;
typedef pair<ll, ll> pll;

const ld PI = 3.14159265359;

const ll MOD = (ll) 998244353ll;
const ll MAXN = (ll) 2e5 + 10;
const ll INF = (ll) 1e15;
const ld EPS = (ld) 1e-8;

pll a[MAXN];

ll d(ll i, ll j){
	return abs(a[i].F - a[j].F) + abs(a[i].S - a[j].S);
}

int main(){
    ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	ll n;
	cin >> n;
	ll minx = INF;
	ll maxx = -INF;
	ll miny = INF;
	ll maxy = -INF;
	ll minxi = -1;
	ll maxxi = -1;
	ll minyi = -1;
	ll maxyi = -1;

	for(int i = 0;i<n;i++){
		cin >> a[i].F >> a[i].S;
		if(a[i].F < minx){
			minx = a[i].F;
			minxi = i;
		}
		if(a[i].F > maxx){
			maxx = a[i].F;
			maxxi = i;
		}
		if(a[i].S > maxy){
			maxy = a[i].S;
			maxyi = i;
		}
		if(a[i].S < miny){
			miny = a[i].S;
			minyi = i;
		}
	}
	if(n == 3){
		return cout << d(0,1)+d(1,2)+d(2,0), 0;
	}

	ll f = 0;
	ll ind[4] = {minxi, maxxi,minyi,maxyi};
	for(int i = 0;i<4;i++){
		for(int j = 0;j<4;j++){
			if((ind[i] == ind[j]) and (i != j)) f = 1;
		}
	}
	ll a1 = minxi;
	ll a2 = maxyi;
	ll a3 = maxxi;
	ll a4 = minyi;
	ll ans = d(minxi, minyi) + d(minxi,maxyi) + d(maxxi,minyi) + d(maxxi,maxyi);
	ll ans2 = max(max(d(a1,a2) + d(a2,a3) + d(a3,a1), d(a1,a2) + d(a2,a4) + d(a4,a1)),  max(d(a1,a3) + d(a3,a4) + d(a4,a1), d(a2,a3) + d(a3,a4) + d(a4,a2)));
	cout << ans2 << " ";
	for(int i = 0;i < n-3; i++) cout << ans << " ";
	return 0;
}

/*

                                 ____              ,----..               ,----..
   ,---,                       ,'  , `.           /   /   \             /   /   \
  '  .' \                   ,-+-,.' _ |          /   .     :           /   .     :
 /  ;    '.              ,-+-. ;   , ||         .   /   ;.  \         .   /   ;.  \
:  :       \            ,--.'|'   |  ;|        .   ;   /  ` ;        .   ;   /  ` ;
:  |   /\   \          |   |  ,', |  ':        ;   |  ; \ ; |        ;   |  ; \ ; |
|  :  ' ;.   :         |   | /  | |  ||        |   :  | ; | '        |   :  | ; | '
|  |  ;/  \   \        '   | :  | :  |,        .   |  ' ' ' :        .   |  ' ' ' :
'  :  | \  \ ,'        ;   . |  ; |--'         '   ;  \; /  |        '   ;  \; /  |
|  |  '  '--'          |   : |  | ,             \   \  ',  /          \   \  ',  /
|  :  :                |   : '  |/               ;   :    /            ;   :    /
|  | ,'                ;   | |`-'                 \   \ .'              \   \ .'
`--''                  |   ;/                      `---`                 `---`
                       '---'

*/


#include <bits/stdc++.h>

using namespace std;

#define forn(i, n) for (ll i = 0; i < (ll) (n); ++i)
#define sz(a) static_cast<int>((a).size())
#define pb emplace_back
#define mp make_pair
#define endl '\n'
#define f first
#define s second

#ifdef SEREZHKA
#define dbg(...) _dbg(#__VA_ARGS__, __VA_ARGS__)
#else
#define dbg(...)
#endif

template<typename T>
void _dbg(const char* _s, T _h) { cerr << _s << " = " << _h << "\n"; }

template<typename T, typename... Ts>
void _dbg(const char*_s, T _h, Ts... _t) {
    int _b = 0;

    while (((_b += *_s == '(') -= *_s == ')') != 0 || *_s != ',')
        cerr << *_s++;

    cerr << " = " << _h << ",";
    _dbg(_s + 1, _t...);
}

using ll = long long;

const ll INF = static_cast<ll>(1e9) + 7ll;
const ll LINF = INF * INF;
const int MAXN = static_cast<int>(1e6) + 17;

int n;
int x[MAXN], y[MAXN];
ll ans[MAXN];

bool read() {
    if (!(cin >> n))
        return false;

    forn (i, n)
        cin >> x[i] >> y[i];

    return true;
}

ll mh(int i, int j) {
    return abs(x[i] - x[j]) + abs(y[i] - y[j]);
}

void solve() {
    set< pair<int, int> > xs, ys;
    set<int> is;

    forn (i, n) {
        xs.insert(mp(x[i], i));
        ys.insert(mp(y[i], i));
        is.insert(i);
    }

    ans[n] = 2ll * (xs.rbegin()->first - xs.begin()->first) + 2ll * (ys.rbegin()->first - ys.begin()->first);

    for (int c = n - 1; c > 3; --c) {
        int id = -1;

        for (auto i : is)
            if (i != xs.begin()->s && i != xs.rbegin()->s && i != ys.begin()->s && i != ys.rbegin()->s) {
                id = i;
                break;
            }

        if (id != -1) {
            is.erase(id);
            ans[c] = ans[n];
            continue;
        }

        assert(false);
    }

    vector<int> vec;

    forn (i, n) {
        if (x[i] == xs.begin()->f || x[i] == xs.rbegin()->f || y[i] == ys.begin()->f || y[i] == ys.rbegin()->f)
            vec.pb(i);
    }

    for (int a = 0; a < sz(vec); ++a)
        for (int b = a; b < sz(vec); ++b)
            for (int c = 0; c < n; ++c)
                ans[3] = max(ans[3], mh(vec[a], vec[b]) + mh(vec[b], c) + mh(c, vec[a]));

    for (int c = 3; c <= n; ++c)
        cout << ans[c] << ' ';

    cout << endl;
}

int main() {
    cin.tie(nullptr);
    std::ios_base::sync_with_stdio(false);

#ifdef SEREZHKA
    freopen("file.in", "r", stdin);
#endif

    while (read())
        solve();

    return 0;
}


#include <bits/stdc++.h>

using namespace std;

#define forn(i, n) for (ll i = 0; i < (ll) (n); ++i)
#define sz(a) static_cast<int>((a).size())
#define pb emplace_back
#define mp make_pair
#define endl '\n'
#define f first
#define s second

#ifdef SEREZHKA
#define dbg(...) _dbg(#__VA_ARGS__, __VA_ARGS__)
#else
#define dbg(...)
#endif

template<typename T>
void _dbg(const char* _s, T _h) { cerr << _s << " = " << _h << "\n"; }

template<typename T, typename... Ts>
void _dbg(const char*_s, T _h, Ts... _t) {
    int _b = 0;

    while (((_b += *_s == '(') -= *_s == ')') != 0 || *_s != ',')
        cerr << *_s++;

    cerr << " = " << _h << ",";
    _dbg(_s + 1, _t...);
}

using ll = long long;

const ll INF = static_cast<ll>(1e9) + 7ll;
const ll LINF = INF * INF;
const int MAXN = static_cast<int>(1e6) + 17;

int n;
int x[MAXN], y[MAXN];
ll ans[MAXN];

bool read() {
    if (!(cin >> n))
        return false;

    forn (i, n)
        cin >> x[i] >> y[i];

    return true;
}

ll dbx(set< pair<int, int> >& xs, set< pair<int, int> >& ys, bool f = false) {
    ll pr = 2ll * (xs.rbegin()->first - xs.begin()->first) + 2ll * (ys.rbegin()->first - ys.begin()->first);
    int i = xs.begin()->second;
    xs.erase(mp(x[i], i));
    ys.erase(mp(y[i], i));
    ll res = 2ll * (xs.rbegin()->first - xs.begin()->first) + 2ll * (ys.rbegin()->first - ys.begin()->first);

    if (!f) {
        xs.insert(mp(x[i], i));
        ys.insert(mp(y[i], i));
    }

    return pr - res;
}

ll dex(set< pair<int, int> >& xs, set< pair<int, int> >& ys, bool f = false) {
    ll pr = 2ll * (xs.rbegin()->first - xs.begin()->first) + 2ll * (ys.rbegin()->first - ys.begin()->first);
    int i = xs.rbegin()->second;
    xs.erase(mp(x[i], i));
    ys.erase(mp(y[i], i));
    ll res = 2ll * (xs.rbegin()->first - xs.begin()->first) + 2ll * (ys.rbegin()->first - ys.begin()->first);

    if (!f) {
        xs.insert(mp(x[i], i));
        ys.insert(mp(y[i], i));
    }

    return pr - res;
}

ll dby(set< pair<int, int> >& xs, set< pair<int, int> >& ys, bool f = false) {
    ll pr = 2ll * (xs.rbegin()->first - xs.begin()->first) + 2ll * (ys.rbegin()->first - ys.begin()->first);
    int i = ys.begin()->second;
    xs.erase(mp(x[i], i));
    ys.erase(mp(y[i], i));
    ll res = 2ll * (xs.rbegin()->first - xs.begin()->first) + 2ll * (ys.rbegin()->first - ys.begin()->first);

    if (!f) {
        xs.insert(mp(x[i], i));
        ys.insert(mp(y[i], i));
    }

    return pr - res;
}

ll dey(set< pair<int, int> >& xs, set< pair<int, int> >& ys, bool f = false) {
    ll pr = 2ll * (xs.rbegin()->first - xs.begin()->first) + 2ll * (ys.rbegin()->first - ys.begin()->first);
    int i = ys.rbegin()->second;
    xs.erase(mp(x[i], i));
    ys.erase(mp(y[i], i));
    ll res = 2ll * (xs.rbegin()->first - xs.begin()->first) + 2ll * (ys.rbegin()->first - ys.begin()->first);

    if (!f) {
        xs.insert(mp(x[i], i));
        ys.insert(mp(y[i], i));
    }

    return pr - res;
}

void solve() {
    set< pair<int, int> > xs, ys;
    set<int> is;

    forn (i, n) {
        xs.insert(mp(x[i], i));
        ys.insert(mp(y[i], i));
        is.insert(i);
    }

    ans[n] = 2ll * (xs.rbegin()->first - xs.begin()->first) + 2ll * (ys.rbegin()->first - ys.begin()->first);

    for (int c = n - 1; c >= 3; --c) {
        int id = -1;

        for (auto i : is)
            if (i != xs.begin()->s && i != xs.rbegin()->s && i != ys.begin()->s && i != ys.rbegin()->s) {
                id = i;
                break;
            }

        if (id != -1) {
            is.erase(id);
            xs.erase(mp(x[id], id));
            ys.erase(mp(y[id], id));
            ans[c] = 2ll * (xs.rbegin()->first - xs.begin()->first) + 2ll * (ys.rbegin()->first - ys.begin()->first);
            continue;
        }

        ll bx, ex, by, ey;
        bx = dbx(xs, ys);
        ex = dex(xs, ys);
        by = dby(xs, ys);
        ey = dey(xs, ys);

        if (bx <= max({ex, by, ey})) {
            dbx(xs, ys, true);
        } else if (ex <= max({bx, by, ey})) {
            dex(xs, ys, true);
        } else if (by <= max({bx, ex, ey})) {
            dby(xs, ys, true);
        } else {
            dey(xs, ys, true);
        }

        ans[c] = 2ll * (xs.rbegin()->first - xs.begin()->first) + 2ll * (ys.rbegin()->first - ys.begin()->first);
    }

    for (int c = 3; c <= n; ++c)
        cout << ans[c] << ' ';

    cout << endl;
}

int main() {
    cin.tie(nullptr);
    std::ios_base::sync_with_stdio(false);

#ifdef SEREZHKA
    freopen("file.in", "r", stdin);
#endif

    while (read())
        solve();

    return 0;
}


#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("no-stack-protector")
#pragma GCC target("sse,sse2,ssse3,sse3,sse4,popcnt,avx,mmx,abm,tune=native")
#include <bits/stdc++.h>
#define DEBUG 1
using namespace std;

namespace output{
    void __(short x){cout<<x;}
    void __(unsigned x){cout<<x;}
    void __(int x){cout<<x;}
    void __(long long x){cout<<x;}
    void __(unsigned long long x){cout<<x;}
    void __(double x){cout<<x;}
    void __(long double x){cout<<x;}
    void __(char x){cout<<x;}
    void __(const char*x){cout<<x;}
    void __(const string&x){cout<<x;}
    void __(bool x){cout<<(x?"true":"false");}
    template<class S,class T>
    void __(const pair<S,T>&x){__(DEBUG?"(":""),__(x.first),__(DEBUG?", ":" "),__(x.second),__(DEBUG?")":"");}
    template<class T>
    void __(const vector<T>&x){__(DEBUG?"{":"");bool _=0;for(const auto&v:x)__(_?DEBUG?", ":" ":""),__(v),_=1;__(DEBUG?"}":"");}
    template<class T>
    void __(const set<T>&x){__(DEBUG?"{":"");bool _=0;for(const auto&v:x)__(_?DEBUG?", ":" ":""),__(v),_=1;__(DEBUG?"}":"");}
    template<class T>
    void __(const multiset<T>&x){__(DEBUG?"{":"");bool _=0;for(const auto&v:x)__(_?DEBUG?", ":" ":""),__(v),_=1;__(DEBUG?"}":"");}
    template<class S,class T>
    void __(const map<S,T>&x){__(DEBUG?"{":"");bool _=0;for(const auto&v:x)__(_?DEBUG?", ":" ":""),__(v),_=1;__(DEBUG?"}":"");}
    void pr(){cout<<"\n";}
    template<class S,class... T>
    void pr(const S&a,const T&...b){__(a);if(sizeof...(b))__(' ');pr(b...);}
}

using namespace output;

typedef long long ll;
typedef long double ld;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
typedef pair<int,char> pic;
typedef pair<double,double> pdd;
typedef pair<ld,ld> pld;
typedef vector<int> vi;
typedef vector<ll> vl;

#define pb push_back
#define fox(i,x,y) for(int i=(x);i<=(y);i++)
#define foxr(i,x,y) for(int i=(y);i>=(x);i--)
#define F first
#define S second

const int MN = 3e5+5;
int n, i, j, x, y, ans, go;
vector<pii> pnt, a[4], tmp;
int dis(pii i,pii j){return abs(i.F-j.F)+abs(i.S-j.S);}
inline bool cp(pii i,pii j,pii o){return 1LL*(i.F-o.F)*(j.S-o.S)-1LL*(i.S-o.S)*(j.F-o.F)<0LL;}

void rec(int d,int lim){
    if(d==4){
        if(lim!=go) return;
        int dist=0;
        for(int i=0;i<tmp.size();i++)
            dist+=dis(tmp[i],tmp[(i+1)%tmp.size()]);
        for(int i=0;i<tmp.size();i++){
            if(!cp(tmp[(i+1)%tmp.size()],tmp[(i+2)%tmp.size()],tmp[i])) return;
        }
        ans=max(ans,dist);
    }
    else{
        for(int i=0;i<3;i++){
            tmp.pb(a[d][i]);
            rec(d+1,lim+1);
            tmp.pop_back();
        }
        rec(d+1,lim);
    }
}

int main(){
    for(scanf("%d",&n),i=1;i<=n;i++){
        scanf("%d%d",&x,&y);
        pnt.pb({x,y});
    }
    sort(pnt.begin(),pnt.end(),[](pii i,pii j){return i.S>j.S;});
    for(i=0;i<3;i++)
        a[0].pb(pnt[i]);
    sort(pnt.begin(),pnt.end(),[](pii i,pii j){return i.F>j.F;});
    for(i=0;i<3;i++)
        a[1].pb(pnt[i]);
    sort(pnt.begin(),pnt.end(),[](pii i,pii j){return i.S<j.S;});
    for(i=0;i<3;i++)
        a[2].pb(pnt[i]);
    sort(pnt.begin(),pnt.end(),[](pii i,pii j){return i.F<j.F;});
    for(i=0;i<3;i++)
        a[3].pb(pnt[i]);
    go=3; rec(0,0);
    printf("%d ",ans);
    if(n>3){
        go=4; ans=0;
        rec(0,0);
        for(i=4;i<=n;i++)
            printf("%d ",ans);
    }
    printf("\n");
    return 0;
}


#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("no-stack-protector")
#pragma GCC target("sse,sse2,ssse3,sse3,sse4,popcnt,avx,mmx,abm,tune=native")
#include <bits/stdc++.h>
#define DEBUG 1
using namespace std;

namespace output{
    void __(short x){cout<<x;}
    void __(unsigned x){cout<<x;}
    void __(int x){cout<<x;}
    void __(long long x){cout<<x;}
    void __(unsigned long long x){cout<<x;}
    void __(double x){cout<<x;}
    void __(long double x){cout<<x;}
    void __(char x){cout<<x;}
    void __(const char*x){cout<<x;}
    void __(const string&x){cout<<x;}
    void __(bool x){cout<<(x?"true":"false");}
    template<class S,class T>
    void __(const pair<S,T>&x){__(DEBUG?"(":""),__(x.first),__(DEBUG?", ":" "),__(x.second),__(DEBUG?")":"");}
    template<class T>
    void __(const vector<T>&x){__(DEBUG?"{":"");bool _=0;for(const auto&v:x)__(_?DEBUG?", ":" ":""),__(v),_=1;__(DEBUG?"}":"");}
    template<class T>
    void __(const set<T>&x){__(DEBUG?"{":"");bool _=0;for(const auto&v:x)__(_?DEBUG?", ":" ":""),__(v),_=1;__(DEBUG?"}":"");}
    template<class T>
    void __(const multiset<T>&x){__(DEBUG?"{":"");bool _=0;for(const auto&v:x)__(_?DEBUG?", ":" ":""),__(v),_=1;__(DEBUG?"}":"");}
    template<class S,class T>
    void __(const map<S,T>&x){__(DEBUG?"{":"");bool _=0;for(const auto&v:x)__(_?DEBUG?", ":" ":""),__(v),_=1;__(DEBUG?"}":"");}
    void pr(){cout<<"\n";}
    template<class S,class... T>
    void pr(const S&a,const T&...b){__(a);if(sizeof...(b))__(' ');pr(b...);}
}

using namespace output;

typedef long long ll;
typedef long double ld;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
typedef pair<int,char> pic;
typedef pair<double,double> pdd;
typedef pair<ld,ld> pld;
typedef vector<int> vi;
typedef vector<ll> vl;

#define pb push_back
#define fox(i,x,y) for(int i=(x);i<=(y);i++)
#define foxr(i,x,y) for(int i=(y);i>=(x);i--)
#define F first
#define S second

const int MN = 3e5+5;
int n, i, j, x, y, ans, go, hm;
vector<pii> pnt, a[4], tmp;
int dis(pii i,pii j){return abs(i.F-j.F)+abs(i.S-j.S);}
inline bool cp(pii i,pii j,pii o){return 1LL*(i.F-o.F)*(j.S-o.S)-1LL*(i.S-o.S)*(j.F-o.F)<0LL;}

void rec(int d){
    if(d==4){
        if(tmp.size()>go) return;
        int dist=0;
        for(int i=0;i<tmp.size();i++)
            dist+=dis(tmp[i],tmp[(i+1)%tmp.size()]);
        for(int i=0;i<tmp.size();i++){
            if(!cp(tmp[(i+1)%tmp.size()],tmp[(i+2)%tmp.size()],tmp[i])) return;
        }
        ans=max(ans,dist);
    }
    else{
        for(int i=0;i<hm;i++){
            tmp.pb(a[d][i]);
            rec(d+1);
            tmp.pop_back();
        }
        rec(d+1);
    }
}

int main(){
    for(scanf("%d",&n),i=1;i<=n;i++){
        scanf("%d%d",&x,&y);
        pnt.pb({x,y});
    }
    hm=min(n,6);
    sort(pnt.begin(),pnt.end(),[](pii i,pii j){return i.S>j.S;});
    for(i=0;i<hm;i++)
        a[0].pb(pnt[i]);
    sort(pnt.begin(),pnt.end(),[](pii i,pii j){return i.F>j.F;});
    for(i=0;i<hm;i++)
        a[1].pb(pnt[i]);
    sort(pnt.begin(),pnt.end(),[](pii i,pii j){return i.S<j.S;});
    for(i=0;i<hm;i++)
        a[2].pb(pnt[i]);
    sort(pnt.begin(),pnt.end(),[](pii i,pii j){return i.F<j.F;});
    for(i=0;i<hm;i++)
        a[3].pb(pnt[i]);
    go=3; rec(0);
    printf("%d ",ans);
    if(n>3){
        go=4; ans=0;
        rec(0);
        for(i=4;i<=n;i++)
            printf("%d ",ans);
    }
    printf("\n");
    return 0;
}


#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("no-stack-protector")
#pragma GCC target("sse,sse2,ssse3,sse3,sse4,popcnt,avx,mmx,abm,tune=native")
#include <bits/stdc++.h>
#define DEBUG 1
using namespace std;

namespace output{
    void __(short x){cout<<x;}
    void __(unsigned x){cout<<x;}
    void __(int x){cout<<x;}
    void __(long long x){cout<<x;}
    void __(unsigned long long x){cout<<x;}
    void __(double x){cout<<x;}
    void __(long double x){cout<<x;}
    void __(char x){cout<<x;}
    void __(const char*x){cout<<x;}
    void __(const string&x){cout<<x;}
    void __(bool x){cout<<(x?"true":"false");}
    template<class S,class T>
    void __(const pair<S,T>&x){__(DEBUG?"(":""),__(x.first),__(DEBUG?", ":" "),__(x.second),__(DEBUG?")":"");}
    template<class T>
    void __(const vector<T>&x){__(DEBUG?"{":"");bool _=0;for(const auto&v:x)__(_?DEBUG?", ":" ":""),__(v),_=1;__(DEBUG?"}":"");}
    template<class T>
    void __(const set<T>&x){__(DEBUG?"{":"");bool _=0;for(const auto&v:x)__(_?DEBUG?", ":" ":""),__(v),_=1;__(DEBUG?"}":"");}
    template<class T>
    void __(const multiset<T>&x){__(DEBUG?"{":"");bool _=0;for(const auto&v:x)__(_?DEBUG?", ":" ":""),__(v),_=1;__(DEBUG?"}":"");}
    template<class S,class T>
    void __(const map<S,T>&x){__(DEBUG?"{":"");bool _=0;for(const auto&v:x)__(_?DEBUG?", ":" ":""),__(v),_=1;__(DEBUG?"}":"");}
    void pr(){cout<<"\n";}
    template<class S,class... T>
    void pr(const S&a,const T&...b){__(a);if(sizeof...(b))__(' ');pr(b...);}
}

using namespace output;

typedef long long ll;
typedef long double ld;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
typedef pair<int,char> pic;
typedef pair<double,double> pdd;
typedef pair<ld,ld> pld;
typedef vector<int> vi;
typedef vector<ll> vl;

#define pb push_back
#define fox(i,x,y) for(int i=(x);i<=(y);i++)
#define foxr(i,x,y) for(int i=(y);i>=(x);i--)
#define F first
#define S second

const int MN = 3e5+5;
int n, i, j, x, y, ans, go, hm;
vector<pii> pnt, a[4], tmp;
int dis(pii i,pii j){return abs(i.F-j.F)+abs(i.S-j.S);}
inline bool cp(pii i,pii j,pii o){return 1LL*(i.F-o.F)*(j.S-o.S)-1LL*(i.S-o.S)*(j.F-o.F)<0LL;}

void rec(int d,int lim){
    if(d==4){
        if(lim!=go) return;
        int dist=0;
        for(int i=0;i<tmp.size();i++)
            dist+=dis(tmp[i],tmp[(i+1)%tmp.size()]);
        for(int i=0;i<tmp.size();i++){
            if(!cp(tmp[(i+1)%tmp.size()],tmp[(i+2)%tmp.size()],tmp[i])) return;
        }
        ans=max(ans,dist);
    }
    else{
        for(int i=0;i<hm;i++){
            tmp.pb(a[d][i]);
            rec(d+1,lim+1);
            tmp.pop_back();
        }
        rec(d+1,lim);
    }
}

int main(){
    for(scanf("%d",&n),i=1;i<=n;i++){
        scanf("%d%d",&x,&y);
        pnt.pb({x,y});
    }
    hm=min(n,6);
    sort(pnt.begin(),pnt.end(),[](pii i,pii j){return i.S>j.S;});
    for(i=0;i<hm;i++)
        a[0].pb(pnt[i]);
    sort(pnt.begin(),pnt.end(),[](pii i,pii j){return i.F>j.F;});
    for(i=0;i<hm;i++)
        a[1].pb(pnt[i]);
    sort(pnt.begin(),pnt.end(),[](pii i,pii j){return i.S<j.S;});
    for(i=0;i<hm;i++)
        a[2].pb(pnt[i]);
    sort(pnt.begin(),pnt.end(),[](pii i,pii j){return i.F<j.F;});
    for(i=0;i<hm;i++)
        a[3].pb(pnt[i]);
    go=3; rec(0,0);
    printf("%d ",ans);
    if(n>3){
        go=4; ans=0;
        rec(0,0);
        for(i=4;i<=n;i++)
            printf("%d ",ans);
    }
    printf("\n");
    return 0;
}


#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("no-stack-protector")
#pragma GCC target("sse,sse2,ssse3,sse3,sse4,popcnt,avx,mmx,abm,tune=native")
#include <bits/stdc++.h>
#define DEBUG 1
using namespace std;

namespace output{
    void __(short x){cout<<x;}
    void __(unsigned x){cout<<x;}
    void __(int x){cout<<x;}
    void __(long long x){cout<<x;}
    void __(unsigned long long x){cout<<x;}
    void __(double x){cout<<x;}
    void __(long double x){cout<<x;}
    void __(char x){cout<<x;}
    void __(const char*x){cout<<x;}
    void __(const string&x){cout<<x;}
    void __(bool x){cout<<(x?"true":"false");}
    template<class S,class T>
    void __(const pair<S,T>&x){__(DEBUG?"(":""),__(x.first),__(DEBUG?", ":" "),__(x.second),__(DEBUG?")":"");}
    template<class T>
    void __(const vector<T>&x){__(DEBUG?"{":"");bool _=0;for(const auto&v:x)__(_?DEBUG?", ":" ":""),__(v),_=1;__(DEBUG?"}":"");}
    template<class T>
    void __(const set<T>&x){__(DEBUG?"{":"");bool _=0;for(const auto&v:x)__(_?DEBUG?", ":" ":""),__(v),_=1;__(DEBUG?"}":"");}
    template<class T>
    void __(const multiset<T>&x){__(DEBUG?"{":"");bool _=0;for(const auto&v:x)__(_?DEBUG?", ":" ":""),__(v),_=1;__(DEBUG?"}":"");}
    template<class S,class T>
    void __(const map<S,T>&x){__(DEBUG?"{":"");bool _=0;for(const auto&v:x)__(_?DEBUG?", ":" ":""),__(v),_=1;__(DEBUG?"}":"");}
    void pr(){cout<<"\n";}
    template<class S,class... T>
    void pr(const S&a,const T&...b){__(a);if(sizeof...(b))__(' ');pr(b...);}
}

using namespace output;

typedef long long ll;
typedef long double ld;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
typedef pair<int,char> pic;
typedef pair<double,double> pdd;
typedef pair<ld,ld> pld;
typedef vector<int> vi;
typedef vector<ll> vl;

#define pb push_back
#define fox(i,x,y) for(int i=(x);i<=(y);i++)
#define foxr(i,x,y) for(int i=(y);i>=(x);i--)
#define F first
#define S second

const int MN = 3e5+5;
int n, i, j, x, y, ans, go, hm;
vector<pii> pnt, a[4], tmp; set<int> X, Y;
int dis(pii i,pii j){return abs(i.F-j.F)+abs(i.S-j.S);}
inline bool cp(pii i,pii j,pii o){return 1LL*(i.F-o.F)*(j.S-o.S)-1LL*(i.S-o.S)*(j.F-o.F)<0LL;}

void rec(int d){
    if(d==4){
        if(tmp.size()>go) return;
        int dist=0;
        for(int i=0;i<tmp.size();i++)
            dist+=dis(tmp[i],tmp[(i+1)%tmp.size()]);
        for(int i=0;i<tmp.size();i++){
            if(!cp(tmp[(i+1)%tmp.size()],tmp[(i+2)%tmp.size()],tmp[i])) return;
        }
        ans=max(ans,dist);
    }
    else{
        for(int i=0;i<hm;i++){
            tmp.pb(a[d][i]);
            rec(d+1);
            tmp.pop_back();
        }
        rec(d+1);
    }
}

int main(){
    for(scanf("%d",&n),i=1;i<=n;i++){
        scanf("%d%d",&x,&y);
        pnt.pb({x,y});
        X.insert(x);
        Y.insert(y);
    }
    hm=min(n,3);
    sort(pnt.begin(),pnt.end(),[](pii i,pii j){return i.S>j.S;});
    for(i=0;i<hm;i++)
        a[0].pb(pnt[i]);
    sort(pnt.begin(),pnt.end(),[](pii i,pii j){return i.F>j.F;});
    for(i=0;i<hm;i++)
        a[1].pb(pnt[i]);
    sort(pnt.begin(),pnt.end(),[](pii i,pii j){return i.S<j.S;});
    for(i=0;i<hm;i++)
        a[2].pb(pnt[i]);
    sort(pnt.begin(),pnt.end(),[](pii i,pii j){return i.F<j.F;});
    for(i=0;i<hm;i++)
        a[3].pb(pnt[i]);
    for(auto h : pnt){
        for(i=0;i<4;i++){
            for(j=0;j<4;j++){
                for(auto v : a[i]){
                    for(auto u : a[j]){
                        ans=max(ans,dis(v,u)+dis(v,h)+dis(u,h));
                    }
                }
            }
        }
    }
    printf("%d ",ans);
    if(n>3){
        go=4; ans=0;
        rec(0);
        for(i=4;i<=n;i++)
            printf("%d ",ans);
    }
    printf("\n");
    return 0;
}


#include<bits/stdc++.h>
using namespace std;

#define fi first
#define se second
#define pb push_back
#define FOR(a, b, c) for(int a = b; a <= c; ++a)
const int N = 3e5 + 10;
const int oo = 1e9;
typedef pair<int, int> ii;

int n, minx = oo, miny = oo, maxx = -oo, maxy = -oo;
int ans[N];
vector<int> mx, mix, my, miy;
ii t[N];

int calc(int p1, int p2, int p3)    {
    int sum = abs(t[p1].fi - t[p2].fi) + abs(t[p1].fi - t[p3].fi) + abs(t[p3].fi - t[p2].fi) ;
    sum += abs(t[p1].se - t[p2].se) + abs(t[p1].se - t[p3].se) + abs(t[p3].se - t[p2].se);
    return sum;
}

signed main()
{
    scanf("%d", &n);
    FOR(i, 1, n) {
        scanf("%d%d", &t[i].fi, &t[i].se);
        maxx = max(maxx, t[i].fi);
        maxy = max(maxy, t[i].se);
        minx = min(minx, t[i].fi);
        miny = min(miny, t[i].se);
    }
    if(n >= 4) ans[4] = 2 * (maxx + maxy - minx - miny);
    FOR(i, 1, n)    {
        if(t[i].fi == maxx) mx.pb(i);
        if(t[i].fi == minx) mix.pb(i);
        if(t[i].se == maxy) my.pb(i);
        if(t[i].se == miny) miy.pb(i);
    }
    for(auto v: mx) for(auto u: mix)    if(v != u)  {
        FOR(t1, 1, n) if(t1 != v && t1 != u)
            ans[3] = max(ans[3], calc(u, v, t1));
    }
    for(int v: my) for(int u: miy)    if(v != u)  {
        FOR(t1, 1, n) if(t1 != v && t1 != u)
            ans[3] = max(ans[3], calc(u, v, t1));
    }
    FOR(i, 5, n) ans[i] = ans[i - 1];
    FOR(i, 3, n) cout << ans[i] << ' ';
}


#include<bits/stdc++.h>
using namespace std;

#define fi first
#define se second
#define pb push_back
#define FOR(a, b, c) for(int a = b; a <= c; ++a)
const int N = 3e5 + 10;
const int oo = 1e9;
typedef pair<int, int> ii;

int n, minx = oo, miny = oo, maxx = -oo, maxy = -oo;
int ans[N];
vector<int> tmp;
ii t[N];

int calc(int p1, int p2, int p3)    {
    int sum = abs(t[p1].fi - t[p2].fi) + abs(t[p1].fi - t[p3].fi) + abs(t[p3].fi - t[p2].fi) ;
    sum += abs(t[p1].se - t[p2].se) + abs(t[p1].se - t[p3].se) + abs(t[p3].se - t[p2].se);
    return sum;
}

signed main()
{
    scanf("%d", &n);
    FOR(i, 1, n) {
        scanf("%d%d", &t[i].fi, &t[i].se);
        maxx = max(maxx, t[i].fi);
        maxy = max(maxy, t[i].se);
        minx = min(minx, t[i].fi);
        miny = min(miny, t[i].se);
    }
    if(n >= 4) ans[4] = 2 * (maxx + maxy - minx - miny);
    FOR(i, 1, n)    {
        if(t[i].fi == maxx || t[i].fi == minx || t[i].se == maxy || t[i].se == miny)
            tmp.pb(i);
    }
    for(auto v: tmp) for(auto u: tmp)    if(v != u)  {
        FOR(t1, 1, n) if(t1 != v && t1 != u)
            ans[3] = max(ans[3], calc(u, v, t1));
    }
    FOR(i, 5, n) ans[i] = ans[i - 1];
    FOR(i, 3, n) cout << ans[i] << ' ';
}
/*
8
0 3
2 2
3 0
2 -2
0 -3
-2 -2
-3 0
-2 2
*/


#include <bits/stdc++.h>

#define MN 301000

using namespace std;
typedef long long ll;

ll ans, res[MN];
int n, x[MN], y[MN], minx = 1000000000, maxx = -1000000000, miny = 1000000000, maxy = -1000000000, q;

ll dist(int i, int j) {
    return abs(x[i] - x[j]) + abs(y[i] - y[j]);
}

vector<int> possib, Minx, Miny, Maxx, Maxy;

ll dist2(int i, int j) {
    i = possib[i];
    j = possib[j];
    return abs(x[i] - x[j]) + abs(y[i] - y[j]);
}

int main() {
    scanf("%d", &n);

    for(int i = 0; i < n; i++) {
        scanf("%d %d", &x[i], &y[i]);
        minx = min(minx, x[i]);
        maxx = max(maxx, x[i]);
        miny = min(miny, y[i]);
        maxy = max(maxy, y[i]);
    }

    for(int i = 0; i < n; i++) {
        ans += dist(i, (i + 1) % n);
    }

    for(int i = 4; i <= n; i++) {
        res[i] = ans;
    }

    for(int i = 0; i < n; i++) {
        if(x[i] == minx) Minx.push_back(y[i]);
        if(y[i] == miny) Miny.push_back(x[i]);

        if(x[i] == maxx) Maxx.push_back(y[i]);
        if(y[i] == maxy) Maxy.push_back(x[i]);
    }
    sort(Minx.begin(), Minx.end());
    sort(Miny.begin(), Miny.end());
    sort(Maxx.begin(), Maxx.end());
    sort(Maxy.begin(), Maxy.end());

    //printf("%d %d %d %d\n", minx, maxx, miny, maxy);

    for(int i = 0; i < n; i++) {
        if(
            (x[i] == minx && (y[i] == Minx[0] || y[i] == Minx.back())) ||
            (x[i] == maxx && (y[i] == Maxx[0] || y[i] == Maxx.back())) ||
            (y[i] == miny && (x[i] == Miny[0] || x[i] == Miny.back())) ||
            (y[i] == maxy && (x[i] == Maxy[0] || x[i] == Maxy.back())) ) {
                possib.push_back(i);
                //printf("%d = %d %d\n", i, x[i], y[i]);
            }
    }

    ans = 0;
    q = possib.size();

    for(int i = 0; i < q; i++) {
        for(int j = i + 1; j < q; j++) {
            for(int k = j + 1; k < q; k++) {
                ans = max(ans, dist2(i, j) + dist2(j, k) + dist2(i, k));
            }
        }
    }
    res[3] = ans;

    for(int i = 3; i <= n; i++)
        printf("%lld ", res[i]);
    return 0;
}


#include <bits/stdc++.h>

#define MN 301000

using namespace std;
typedef long long ll;

ll ans, res[MN];
int n, x[MN], y[MN], q;

ll dist(int i, int j) {
    return abs(x[i] - x[j]) + abs(y[i] - y[j]);
}

struct po {
    int idx, l, r;

    bool operator ==(const po &o) const {
        return tie(idx, l, r) == tie(o.idx, o.l, o.r);
    }

    bool operator < (const po &o) const {
        ll g1 = dist(idx, l) + dist(idx, r) - dist(l, r);
        ll g2 = dist(o.idx, o.l) + dist(o.idx, o.r) - dist(o.l, o.r);
        if(g1 != g2) return g1 < g2;
        return idx < o.idx;
    }
};

set<po> p;
po pts[MN];

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++) {
        pts[i] = {i, (i + n - 1) % n, (i + 1) % n};
        p.insert(pts[i]);
        ans += dist(i, (i + 1) % n);
    }

    q = n;
    res[q] = ans;
    while(q) {
        po u = *(p.begin()); p.erase(u);
        assert(u == pts[u.idx]);

        ans = ans - dist(u.idx, u.l) - dist(u.idx, u.r) + dist(u.l, u.r);
        res[--q] = ans;

        p.erase(pts[u.l]);
        p.erase(pts[u.r]);

        pts[u.l].r = u.r;
        pts[u.r].l = u.l;

        p.insert(pts[u.l]);
        p.insert(pts[u.r]);
    }

    for(int i = 3; i <= n; i++)
        printf("%lld ", res[i]);
    return 0;
}


#include <bits/stdc++.h>

#define MN 301000

using namespace std;
typedef long long ll;

ll ans, res[MN];
int n, x[MN], y[MN], minx = 1000000000, maxx = -1000000000, miny = 1000000000, maxy = -1000000000, q;

ll dist(int i, int j) {
    return abs(x[i] - x[j]) + abs(y[i] - y[j]);
}

vector<int> possib, Minx, Miny, Maxx, Maxy;

ll dist2(int i, int j) {
    i = possib[i];
    j = possib[j];
    return abs(x[i] - x[j]) + abs(y[i] - y[j]);
}

int main() {
    scanf("%d", &n);

    for(int i = 0; i < n; i++) {
        scanf("%d %d", &x[i], &y[i]);
        minx = min(minx, x[i]);
        maxx = max(maxx, x[i]);
        miny = min(miny, y[i]);
        maxy = max(maxy, y[i]);
    }

    for(int i = 0; i < n; i++) {
        ans += dist(i, (i + 1) % n);
    }

    for(int i = 4; i <= n; i++) {
        res[i] = ans;
    }

    for(int i = 0; i < n; i++) {
        if(x[i] == minx) Minx.push_back(y[i]);
        if(y[i] == miny) Miny.push_back(x[i]);

        if(x[i] == maxx) Maxx.push_back(y[i]);
        if(y[i] == maxy) Maxy.push_back(x[i]);
    }
    sort(Minx.begin(), Minx.end());
    sort(Miny.begin(), Miny.end());
    sort(Maxx.begin(), Maxx.end());
    sort(Maxy.begin(), Maxy.end());

    //printf("%d %d %d %d\n", minx, maxx, miny, maxy);

    for(int i = 0; i < n; i++) {
        if(
            (x[i] == minx && (y[i] == Minx[0] || y[i] == Minx.back())) ||
            (x[i] == maxx && (y[i] == Maxx[0] || y[i] == Maxx.back())) ||
            (y[i] == miny && (x[i] == Miny[0] || x[i] == Miny.back())) ||
            (y[i] == maxy && (x[i] == Maxy[0] || x[i] == Maxy.back())) ) {
                possib.push_back(i);
                //printf("%d = %d %d\n", i, x[i], y[i]);
            }
    }

    ans = -1000000000;
    q = possib.size();

    for(int i = 0; i < q; i++) {
        for(int j = i + 1; j < q; j++) {
            for(int k = j + 1; k < q; k++) {
                ans = max(ans, dist2(i, j) + dist2(j, k) + dist2(k, i));
            }
        }
    }
    res[3] = ans;

    for(int i = 3; i <= n; i++)
        printf("%lld ", res[i]);
    return 0;
}


#include <bits/stdc++.h>

#define MN 301000

using namespace std;
typedef long long ll;

ll ans, res[MN];
int n, x[MN], y[MN], minx = 1000000000, maxx = -1000000000, miny = 1000000000, maxy = -1000000000, q;

ll dist(int i, int j) {
    return abs(x[i] - x[j]) + abs(y[i] - y[j]);
}

vector<int> possib, Minx, Miny, Maxx, Maxy;

int main() {
    scanf("%d", &n);

    for(int i = 0; i < n; i++) {
        scanf("%d %d", &x[i], &y[i]);
        minx = min(minx, x[i]);
        maxx = max(maxx, x[i]);
        miny = min(miny, y[i]);
        maxy = max(maxy, y[i]);
    }

    for(int i = 0; i < n; i++) {
        ans += dist(i, (i + 1) % n);
    }

    for(int i = 4; i <= n; i++) {
        res[i] = ans;
    }

    for(int i = 0; i < n; i++) {
        if(x[i] == minx) Minx.push_back(y[i]);
        if(y[i] == miny) Miny.push_back(x[i]);

        if(x[i] == maxx) Maxx.push_back(y[i]);
        if(y[i] == maxy) Maxy.push_back(x[i]);
    }
    sort(Minx.begin(), Minx.end());
    sort(Miny.begin(), Miny.end());
    sort(Maxx.begin(), Maxx.end());
    sort(Maxy.begin(), Maxy.end());

    //printf("%d %d %d %d\n", minx, maxx, miny, maxy);

    for(int i = 0; i < n; i++) {
        if(
            (x[i] == minx && (y[i] == Minx[0] || y[i] == Minx.back())) ||
            (x[i] == maxx && (y[i] == Maxx[0] || y[i] == Maxx.back())) ||
            (y[i] == miny && (x[i] == Miny[0] || x[i] == Miny.back())) ||
            (y[i] == maxy && (x[i] == Maxy[0] || x[i] == Maxy.back())) ) {
                possib.push_back(i);
                //printf("%d = %d %d\n", i, x[i], y[i]);
            }
    }

    ans = -1000000000;
    q = possib.size();

    for(int i = 0; i < q; i++) {
        for(int j = i + 1; j < q; j++) {
            for(int k = 0; k < n; k++) {
                ans = max(ans, dist(possib[i], possib[j]) + dist(possib[j], k) + dist(k, possib[i]));
            }
        }
    }
    res[3] = ans;

    for(int i = 3; i <= n; i++)
        printf("%lld ", res[i]);
    return 0;
}


#include <bits/stdc++.h>

#define MN 301000

using namespace std;
typedef long long ll;

ll ans, res[MN];
int n, x[MN], y[MN], minx, maxx, miny, maxy, q;

ll dist(int i, int j) {
    return abs(x[i] - x[j]) + abs(y[i] - y[j]);
}

vector<int> possib, Minx, Miny, Maxx, Maxy;

ll dist2(int i, int j) {
    i = possib[i];
    j = possib[j];
    return abs(x[i] - x[j]) + abs(y[i] - y[j]);
}

int main() {
    scanf("%d", &n);

    for(int i = 0; i < n; i++) {
        scanf("%d %d", &x[i], &y[i]);
        minx = min(minx, x[i]);
        maxx = max(maxx, x[i]);
        miny = min(miny, y[i]);
        maxy = max(maxy, y[i]);
    }

    for(int i = 0; i < n; i++) {
        ans += dist(i, (i + 1) % n);
    }

    for(int i = 4; i <= n; i++) {
        res[i] = ans;
    }

    for(int i = 0; i < n; i++) {
        if(x[i] == minx) Minx.push_back(y[i]);
        if(y[i] == miny) Miny.push_back(x[i]);

        if(x[i] == maxx) Maxx.push_back(y[i]);
        if(y[i] == maxy) Maxy.push_back(x[i]);
    }
    sort(Minx.begin(), Minx.end());
    sort(Miny.begin(), Miny.end());
    sort(Maxx.begin(), Maxx.end());
    sort(Maxy.begin(), Maxy.end());

    for(int i = 0; i < n; i++) {
        if(
            (x[i] == minx && (y[i] == Minx[0] || y[i] == Minx.back())) ||
            (x[i] == maxx && (y[i] == Maxx[0] || y[i] == Maxx.back())) ||
            (y[i] == miny && (x[i] == Miny[0] || x[i] == Miny.back())) ||
            (y[i] == maxy && (x[i] == Maxy[0] || x[i] == Maxy.back())) )
                possib.push_back(i);
    }

    ans = 0;
    q = possib.size();

    for(int i = 0; i < q; i++) {
        for(int j = i + 1; j < q; j++) {
            for(int k = j + 1; k < q; k++) {
                ans = max(ans, dist2(i, j) + dist2(j, k) + dist2(i, k));
            }
        }
    }
    res[3] = ans;

    for(int i = 3; i <= n; i++)
        printf("%lld ", res[i]);
    return 0;
}


#include<bits/stdc++.h>
using namespace std;
#define pb push_back
#define mp make_pair
#define ll long long
#define forn(i,n) for (int i = 0;i < int(n); i++)
#define fore(i,n) for (int i = 1;i <=int(n); i++)
#define ford(i,n) for (int i = int(n)-1;i >= 0;i--)
#define forde(i,n) for (int i = int(n);i >= 1; i--)
#define f first
#define s second
typedef pair<int,int> pii;
const int N=3e5+5;
const int mod=998244353;
const int inf=1e9+9;
int n,val[4],pos[4];bool b;
pii point[N];
int main()
{
    val[0]=-inf;
    val[1]=inf;
    val[2]=-inf;
    val[3]=inf;
    scanf("%d",&n);
    forn(i,n){
        scanf("%d%d",&point[i].f,&point[i].s);
        if(point[i].f>val[0]){
            pos[0]=i;
            val[0]=point[i].f;
        }
        if(point[i].f<val[1]){
            pos[1]=i;
            val[1]=point[i].f;
        }
        if(point[i].s>val[2]){
            pos[2]=i;
            val[2]=point[i].s;
        }
        if(point[i].s<val[3]){
            pos[3]=i;
            val[3]=point[i].s;
        }
    }
    int s=2*(val[0]-val[1]+val[2]-val[3]);
    forn(i,n){
        if((point[i].f==val[0]||point[i].f==val[1])&&(point[i].s==val[2]||point[i].s==val[3]))
            b=true;
    }
    if(b){
        printf("%d ",s);
    }
    else{
        int per=-inf;
        forn(i,4){
            forn(j,4){
                if(i!=j){
                    forn(k,n){
                        if(k!=pos[i]&&k!=pos[j]){
                            int l=pos[i],m=pos[j];
                            int maxx=max(max(point[l].f,point[m].f),point[k].f);
                            int maxy=max(max(point[l].s,point[m].s),point[k].s);
                            int minx=min(min(point[l].f,point[m].f),point[k].f);
                            int miny=min(min(point[l].s,point[m].s),point[k].s);
                            int p=2*(maxx-minx+maxy-miny);
                            per=max(per,p);
                        }
                    }
                }
            }
        }
        printf("%d ",per);
    }
    forn(i,n-3){
        printf("%d ",s);
    }
    return 0;
}


#include<bits/stdc++.h>
using namespace std;
#define pb push_back
#define mp make_pair
#define ll long long
#define forn(i,n) for (int i = 0;i < int(n); i++)
#define fore(i,n) for (int i = 1;i <=int(n); i++)
#define ford(i,n) for (int i = int(n)-1;i >= 0;i--)
#define forde(i,n) for (int i = int(n);i >= 1; i--)
#define f first
#define s second
typedef pair<int,int> pii;
const int N=2e5+5;
const int mod=998244353;
const int inf=1e9+9;
int n,val[4],pos[4];bool b;
pii point[N];
int main()
{
    val[0]=-inf;
    val[1]=inf;
    val[2]=-inf;
    val[3]=inf;
    scanf("%d",&n);
    forn(i,n){
        scanf("%d%d",&point[i].f,&point[i].s);
        if(point[i].f>val[0]){
            pos[0]=i;
            val[0]=point[i].f;
        }
        if(point[i].f<val[1]){
            pos[1]=i;
            val[1]=point[i].f;
        }
        if(point[i].s>val[2]){
            pos[2]=i;
            val[2]=point[i].s;
        }
        if(point[i].s<val[3]){
            pos[3]=i;
            val[3]=point[i].s;
        }
    }
    int s=2*(val[0]-val[1]+val[2]-val[3]);
    forn(i,n){
        if((point[i].f==val[0]||point[i].f==val[1])&&(point[i].s==val[2]||point[i].s==val[3]))
            b=true;
    }
    if(b){
        printf("%d ",s);
    }
    else{
        int per=-inf;
        forn(i,4){
            forn(j,4){
                if(i!=j){
                    forn(k,n){
                        if(k!=pos[i]&&k!=pos[j]){
                            int l=pos[i],m=pos[j];
                            int maxx=max(max(point[l].f,point[m].f),point[k].f);
                            int maxy=max(max(point[l].s,point[m].s),point[k].s);
                            int minx=min(min(point[l].f,point[m].f),point[k].f);
                            int miny=min(min(point[l].s,point[m].s),point[k].s);
                            int p=2*(maxx-minx+maxy-miny);
                            per=max(per,p);
                        }
                    }
                }
            }
        }
        printf("%d ",per);
    }
    forn(i,n-3){
        printf("%d ",s);
    }
    return 0;
}


#include<bits/stdc++.h>
using namespace std;
#define pb push_back
#define mp make_pair
#define ll long long
#define forn(i,n) for (int i = 0;i < int(n); i++)
#define fore(i,n) for (int i = 1;i <=int(n); i++)
#define ford(i,n) for (int i = int(n)-1;i >= 0;i--)
#define forde(i,n) for (int i = int(n);i >= 1; i--)
#define f first
#define s second
typedef pair<int,int> pii;
const int N=2e5+5;
const int mod=998244353;
const int inf=1e9+9;
int n,val[4],pos[4];bool b;
pii point[N];
int main()
{
    val[0]=-inf;
    val[1]=inf;
    val[2]=-inf;
    val[3]=inf;
    scanf("%d",&n);
    forn(i,n){
        scanf("%d%d",&point[i].f,&point[i].s);
        if(point[i].f>val[0]){
            pos[0]=i;
            val[0]=point[i].f;
        }
        if(point[i].f<val[1]){
            pos[1]=i;
            val[1]=point[i].f;
        }
        if(point[i].f>val[2]){
            pos[2]=i;
            val[2]=point[i].s;
        }
        if(point[i].s<val[3]){
            pos[3]=i;
            val[3]=point[i].s;
        }
    }
    int s=2*(val[0]-val[1]+val[2]-val[3]);
    forn(i,n){
        if((point[i].f==val[0]||point[i].f==val[1])&&(point[i].s==val[2]||point[i].s==val[3]))
            b=true;
    }
    if(b){
        printf("%d ",s);
    }
    else{
        int per=-inf;
        forn(i,4){
            forn(j,4){
                if(i!=j){
                    forn(k,n){
                        if(k!=pos[i]&&k!=pos[j]){
                            int l=pos[i],m=pos[j];
                            int maxx=max(max(point[l].f,point[m].f),point[k].f);
                            int maxy=max(max(point[l].s,point[m].s),point[k].s);
                            int minx=min(min(point[l].f,point[m].f),point[k].f);
                            int miny=min(min(point[l].s,point[m].s),point[k].s);
                            int p=2*(maxx-minx+maxy-miny);
                            per=max(per,p);
                        }
                    }
                }
            }
        }
        printf("%d ",per);
    }
    forn(i,n-3){
        printf("%d ",s);
    }
    return 0;
}