#include<queue>
#include<map>
#include<functional>
#include<vector>
#include<iostream>
#include<stdio.h>
using namespace std;
priority_queue<int,vector<int>,greater<int> > moment[100001];
int store[100001]={0};
int main()
{
int n,m,t,ts,id;
cin>>n>>m>>t;
for(int i=0;i<m;i++)
{
cin>>ts>>id;
moment[ts].push(id);
}
int pri=0;
map<int,int> a;
for(int i=1;i<=t;i++)
{
pri++;
int pre,cou;
while(!moment[i].empty())
{
pre=moment[i].top();cou=0;
while(!moment[i].empty()&&pre==moment[i].top())
{
cou++;
moment[i].pop();
}
store[pre]=store[pre]<pri?pri+2cou:store[pre]+2cou+1;
}