#include<bits/stdc++.h>
#define ll long long
#define i128 __int128
#define ull unsigned long long
#define pii pair<int,int>
#define pll pair<long long, long long>
#define fs first
#define sc second
#define x0 _x0_
#define y1 _y1_
#define endl '\n'
#define re register
#define pb push_back
#define vi vector<int>
#define pq priority_queue
#define mem(a,x) memset((a),(x),sizeof(a))
#define debug puts("AK IOI")
#define sz(s) (int)(s.size())
#define all(a) a.begin(),a.end()
#define rd(l,r) (myrand()%(r-l+1)+l)
#define print(x) {cout<<x<<endl;return;}
#define ctn(e) if(e) continue
#define brk(e) if(e) break
#define rt(e) if(e) return
#define ll_(e) (1ll*(e))
#define For(x,y,z) for(int x = y;x <= z;x++)
#define For_(x,y,z) for(int x = y;x >= z;x--)
#define double long double
#define mkp make_pair
using namespace std;
#define int long long
const int mod = 1e9+7;
mt19937 myrand(time(0));
const int inf = 0x3f3f3f3f,N = 1e5+5,M = 2e5+5,K = 1e5;
const long long linf = 0x3f3f3f3f3f3f3f3f;
struct node{int a,b,c,d,id;char ch;int mx,val;}a[N],vis[N];
bool operator==(node x,node y) {return x.a==y.a&&x.b==y.b&&x.c==y.c&&x.d==y.d;}
int _unique[N],id1[N],id2[N],tree[N],n;
bool main_cmp(node a,node b){return a.a!=b.a?a.a<b.a:(a.b!=b.b?a.b<b.b:(a.c!=b.c?a.c<b.c:a.d<b.d));}
bool CDQ_cmp(node a,node b){return a.b!=b.b?a.b<b.b:(a.c!=b.c?a.c<b.c:(a.d!=b.d?a.d<b.d:a.a<b.a));}
bool cdq_cmp(node a,node b){return a.c!=b.c?a.c<b.c:(a.d!=b.d?a.d<b.d:(a.a!=b.a?a.a<b.a:a.a<b.a));}
void add(int x,ll w) {for(;x<=_unique[0];x+=x&(-x)) if(tree[x]<w) tree[x]=w;else return;}
void clear(int x) {for(;x<=_unique[0];x+=x&(-x)) if(tree[x]) tree[x]=0;else return;}
int query(int x) {int res=0;for(;x;x-=x&(-x)) res=max(res,tree[x]);return res;}
inline void cdq(int l,int r){
}inline void CDQ(int l,int r){
if(l==r)return ;
int mid = (l+r)>>1;CDQ(1,mid);
}void solve(){
cin>>n;For(i,1,n){cin>>a[i].a>>a[i].b>>a[i].c>>a[i].d>>a[i].val;_unique[i]=a[i].d;}
sort(_unique+1,_unique+1+n),_unique[0]=unique(_unique+1,_unique+1+n)-_unique-1,sort(a+1,a+1+n,main_cmp);
For(i,1,n)a[i].d=lower_bound(_unique+1,_unique+1+_unique[0],a[i].d)-_unique;
int cnt=0;For(i,1,n) if(a[i]==a[i-1]) a[cnt].val+=max(0ll,a[i].val);else a[++cnt]=a[i]; n=cnt;
For(i,1,n) a[i].mx=a[i].val,a[i].id=id1[i]=i;
CDQ(1,n);
int maxn=-1e17;For(i,1,n)maxn=max(maxn,a[i].mx);cout<<maxn;
}signed main(){
ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
int T=1;
For(_,1,T) solve();
return 0;
}