#include<bits/stdc++.h>
#define x first.first
#define y first.second
using namespace std;
typedef long long ll;
typedef pair<pair<ll,ll> ,ll> point;
//checks if direction formed by abc is clockwise or anticlockwise
ll cross (point a, point b, point c) { return (b.x - a.x) * (c.y - a.y) - (b.y - a.y) * (c.x - a.x);}
vector<point> ConvexHull(vector<point>&p, int n) {
int sz=0;
vector<point> hull(n+n);
sort(p.begin(), p.end());
for(int i = 0; i < n; ++i) { //Computes lower hull of convex hull
while (sz > 1 and cross(hull[sz - 2], hull[sz - 1], p[i]) <= 0) --sz;
hull[sz++] = p[i];
}
for(int i = n - 2, j = sz + 1; i >= 0; --i) { //Appends upper hull
while (sz >= j and cross(hull[sz - 2], hull[sz - 1], p[i]) <= 0) --sz;
hull[sz++] = p[i];
} hull.resize(sz - 1);
return hull;
}
vector<point> inp,op;
ll ans=0,u,v,w,n;
int main() {
ios::sync_with_stdio(false);cin.tie(0);
cin>>n;
for (int i=0;i<n;i++) cin>>u>>v>>w,inp.push_back(make_pair(make_pair(u,v),w));
op=ConvexHull(inp,n);
for (int i=0;i<(int)op.size();i++) ans+=op[i].second;
cout<<ans;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSB4IGZpcnN0LmZpcnN0CiNkZWZpbmUgeSBmaXJzdC5zZWNvbmQKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdHlwZWRlZiBsb25nIGxvbmcgbGw7CnR5cGVkZWYgcGFpcjxwYWlyPGxsLGxsPiAsbGw+IHBvaW50OwovL2NoZWNrcyBpZiBkaXJlY3Rpb24gZm9ybWVkIGJ5IGFiYyBpcyBjbG9ja3dpc2Ugb3IgYW50aWNsb2Nrd2lzZQpsbCBjcm9zcyAocG9pbnQgYSwgcG9pbnQgYiwgcG9pbnQgYykgeyByZXR1cm4gKGIueCAtIGEueCkgKiAoYy55IC0gYS55KSAtIChiLnkgLSBhLnkpICogKGMueCAtIGEueCk7fQp2ZWN0b3I8cG9pbnQ+IENvbnZleEh1bGwodmVjdG9yPHBvaW50PiZwLCBpbnQgbikgewogICAgaW50IHN6PTA7CiAgICB2ZWN0b3I8cG9pbnQ+IGh1bGwobituKTsKICAgIHNvcnQocC5iZWdpbigpLCBwLmVuZCgpKTsKICAgIGZvcihpbnQgaSA9IDA7IGkgPCBuOyArK2kpIHsJLy9Db21wdXRlcyBsb3dlciBodWxsIG9mIGNvbnZleCBodWxsCiAgICAgICAgd2hpbGUgKHN6ID4gMSBhbmQgY3Jvc3MoaHVsbFtzeiAtIDJdLCBodWxsW3N6IC0gMV0sIHBbaV0pIDw9IDApIC0tc3o7CiAgICAgICAgaHVsbFtzeisrXSA9IHBbaV07CiAgICB9CiAgICBmb3IoaW50IGkgPSBuIC0gMiwgaiA9IHN6ICsgMTsgaSA+PSAwOyAtLWkpIHsgLy9BcHBlbmRzIHVwcGVyIGh1bGwKICAgICAgICB3aGlsZSAoc3ogPj0gaiBhbmQgY3Jvc3MoaHVsbFtzeiAtIDJdLCBodWxsW3N6IC0gMV0sIHBbaV0pIDw9IDApIC0tc3o7CiAgICAgICAgaHVsbFtzeisrXSA9IHBbaV07CiAgICB9IGh1bGwucmVzaXplKHN6IC0gMSk7CiAgICByZXR1cm4gaHVsbDsKfQp2ZWN0b3I8cG9pbnQ+IGlucCxvcDsKbGwgYW5zPTAsdSx2LHcsbjsKaW50IG1haW4oKSB7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7Y2luLnRpZSgwKTsKICAgIGNpbj4+bjsKICAgIGZvciAoaW50IGk9MDtpPG47aSsrKSBjaW4+PnU+PnY+PncsaW5wLnB1c2hfYmFjayhtYWtlX3BhaXIobWFrZV9wYWlyKHUsdiksdykpOwogICAgb3A9Q29udmV4SHVsbChpbnAsbik7CiAgICBmb3IgKGludCBpPTA7aTwoaW50KW9wLnNpemUoKTtpKyspIGFucys9b3BbaV0uc2Vjb25kOwogICAgY291dDw8YW5zOwp9IA==