#include<iostream>
#include<set>
using namespace std;
struct Data
{
int index;
int value;
};
struct myComp
{
bool operator()(const Data &a, const Data &b)
{
return a.index < b.index;
}
};
int main()
{
set<Data, myComp> dataset;
int m,n;
cin>>m>>n;
for(int i=0; i<m; i++)
{
int idx;
int dt;
cin>>idx;
cin>>dt;
if(dataset.empty())
{
Data tmp;
tmp.index = idx;
tmp.value = dt;
dataset.insert(tmp);
}
else
{
Data last = *(--dataset.end());
if(idx > last.index)
{
for(int i=1; i<=(idx-last.index); i++)
{
Data tmp;
tmp.index = i+last.index;
tmp.value = last.value + (dt-last.value)*i/(idx-last.index);
dataset.insert(tmp);
}
}
}
}
for(set<Data>::iterator itr=dataset.begin(); itr!=dataset.end(); itr++)
{
cout<<(*itr).index<<' '<<(*itr).value<<endl;
}
return 0;
}