/**
 *    author:  otera    
**/
#include<iostream>
#include<string> 
#include<cstdio>
#include<cstring>
#include<vector>
#include<cmath>
#include<algorithm> 
#include<functional>
#include<iomanip>
#include<queue>
#include<deque>
#include<ciso646>
#include<random>
#include<map>
#include<set>
#include<complex>
#include<bitset>
#include<stack>
#include<unordered_map>
#include<utility>
#include<cassert>
using namespace std;

#define int long long
typedef long long ll;
typedef unsigned long long ul;
typedef unsigned int ui;
typedef long double ld;
const int inf=1e9+7;
const ll INF=1LL<<60 ;
const ll mod=1e9+7 ;
#define rep(i,n) for(int i=0;i<n;i++)
#define per(i,n) for(int i=n-1;i>=0;i--)
#define Rep(i,sta,n) for(int i=sta;i<n;i++)
#define rep1(i,n) for(int i=1;i<=n;i++)
#define per1(i,n) for(int i=n;i>=1;i--)
#define Rep1(i,sta,n) for(int i=sta;i<=n;i++)
typedef complex<ld> Point;
const ld eps = 1e-8;
const ld pi = acos(-1.0);
typedef pair<int, int> P;
typedef pair<ld, ld> LDP;
typedef pair<ll, ll> LP;
#define fr first
#define sc second
#define all(c) c.begin(),c.end()
#define pb push_back
#define debug(x)  cerr << #x << " = " << (x) << endl;
template<class T> inline bool chmax(T& a, T b) { if (a < b) { a = b; return 1; } return 0; }
template<class T> inline bool chmin(T& a, T b) { if (a > b) { a = b; return 1; } return 0; }

void solve() {
	int n; cin >> n;
    vector<int> x(n), y(n), p(n);
    rep(i, n) {
        cin >> x[i] >> y[i] >> p[i];
    }
    vector<int> ans(n + 1, INF);
    vector<vector<int>> checkx((1<<n), vector<int>(n, inf)), checky((1<<n), vector<int>(n, inf));
    vector<int> vx, vy;
    for(int bit = 0; bit < (1<<n); ++ bit) {
        vx.clear(), vy.clear();
        vx.emplace_back(0), vy.emplace_back(0);
        rep(i, n) {
            if(bit & (1<<i)) {
                vx.emplace_back(x[i]);
                vy.emplace_back(y[i]);
            }
        }
        sort(all(vx)), sort(all(vy));
        rep(i, n) {
            int& xmi = checkx[bit][i];
            int& ymi = checky[bit][i];
            auto ite1 = lower_bound(all(vx), x[i]); 
            if(ite1 != vx.end()) chmin(xmi, abs(x[i] - *ite1));
            if(ite1 != vx.begin()) {
                -- ite1;
                chmin(xmi, abs(x[i] - *ite1));
            }
            auto ite2 = lower_bound(all(vy), y[i]); 
            if(ite2 != vy.end()) chmin(ymi, abs(y[i] - *ite2));
            if(ite2 != vy.begin()) {
                -- ite2;
                chmin(ymi, abs(y[i] - *ite2));
            }
        }
    }
    for(int bit = 0; bit < (1<<n); ++ bit) {
        for(int mbit = bit;; mbit = (mbit - 1) & bit) {
            int cnt = 0;
            int xbit = 0, ybit = 0;
            rep(i, n) {
                if(bit & (1<<i)) {
                    ++ cnt;
                    if(mbit & (1<<i)) {
                        xbit |= (1<<i);
                    }
                    else {
                        ybit |= (1<<i);
                    }
                }
            }
            int res = 0;
            rep(i, n) {
                res += p[i] * min(checkx[xbit][i], checky[ybit][i]);
            }
            chmin(ans[cnt], res);
            if(mbit == 0) break;
        }
    }
    rep(i, n + 1) {
        cout << ans[i] << endl;
    }
}

signed main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	//cout << fixed << setprecision(10);
	//int t; cin >> t; rep(i, t)solve();
	solve();
    return 0;
}


Measured memory_bytes: 12956