#include<stdio.h>#include<string.h>#include<math.h>#include<iostream>#include<algorithm>#include<map>#include<set>#include<bitset>#include<vector>using namespace std;typedef int lld;#define pb push_back#define mp make_pair#define X first#define Y second#define inf 0xfffffff#define MAXN 1100#define L(x) (x<<1)#define R(x) ((x<<1)|1)const double EPS = 1e-6;lld num[15002*4],col[15002*4];void pushdown(int t,lld col[],lld num[]){ if(col[t]) { num[L(t)]+=col[t]; num[R(t)]+=col[t]; col[L(t)]+=col[t]; col[R(t)]+=col[t]; col[t]=0; }}void update(int ll,int rr,int t,int l,int r,lld num[],lld col[],lld x){ if(l!=r) pushdown(t,col,num); if(ll<=l&&r<=rr) { col[t]+=x; num[t]+=x; return; } int m=(l+r)/2; if(ll<=m) update(ll,rr,L(t),l,m,num,col,x); if(rr>m) update(ll,rr,R(t),m+1,r,num,col,x);}int ansl,ansr,sl,sr;void query(int t,int l,int r,lld col[],lld num []){ if(l!=r) pushdown(t,col,num); if(l==r) { if(num[t]>ansl) { ansl=num[t]; sl=l; } else if(num[t]==ansl&&l<sl) sl=l; if(num[t]>ansr) { ansr=num[t]; sr=l; } else if(num[t]==ansr&&l>sr) sr=l; return; } int m=(l+r)/2; query(L(t),l,m,col,num); query(R(t),m+1,r,col,num);}int main(){ int l; while(scanf("%d",&l)!=EOF) { int ll,rr,c; memset(num,0,sizeof(num)); memset(col,0,sizeof(col)); while(scanf("%d%d%d",&ll,&rr,&c)) { if(ll==-1) break; update(ll,rr,1,0,l,num,col,c); } ansl=0;sl=l; ansr=0;sr=0; query(1,0,l,col,num); printf("%d %dn",sl,sr); }}