#include<iostream>
#include<algorithm>
#include<vector>
#include<queue>

using namespace std;

struct state {
  int id,score,last;
  bool operator < ( const state &p ) const {
    if(score==p.score)return id > p.id;
    else return score < p.score;
  }
};

struct event {
  int d,t,x;
};

int N,R,L;
int score[100010];
int last[100010];
int sum[100010];
event events[1000010];


int main(){
  priority_queue < state > Q;
  for(int i=0;i<100010;i++)score[i]=last[i]=sum[i]=0;
  cin>>N>>R>>L;
  for(int i=1;i<=N;i++)Q.push( (state){i,0,0} );
  for(int i=0;i<R;i++){
    cin>>events[i].d>>events[i].t>>events[i].x;
  }
  events[R].t=L;
  events[R].d=events[R].x=0;
  state f = (state){1,0,0};
  state g;
  int a=0;
  for(int i=0;i<=R;i++){
    event e = events[i];
    score[e.d]+=e.x;
    last[e.d]=e.t;
    Q.push( (state){e.d,score[e.d],last[e.d]} );
    if(i+1<=R&&e.t==events[i+1].t)continue;
    g=f;
    while(1){
      f=Q.top();
      if(f.last==last[f.id])break;
      Q.pop();
    }
    sum[g.id]+=(e.t-a);
    //cout<<g.id << ' '<<e.t-a<<endl;
    a=e.t;
  }
  int ans=-1,ans2=0;
  for(int i=1;i<=N;i++){
    if(ans<sum[i]){
      ans=sum[i];
      ans2=i;
    }
  }
  cout<<ans2<<endl;
  return 0;
}