#include <iostream>
#include <cmath>
#include <string.h>
using namespace std;
int main(){
	long n,q; cin >> n >> q;
	int MAX_N=1; while(n>pow(2,(double)MAX_N)) {MAX_N++;}
	long a[25][1000001]={0}; long num[25][1000001]; memset(num,-1,sizeof(num));
	for(long i=0;i<q;i++){
		long tmp,TMP; cin >> tmp >> TMP;
		tmp--; //tmpはinputでは1base、処理は0base
		a[0][tmp]+=TMP; num[0][tmp]=tmp; long POW=2;
		//以下seg tree
		for(int j=1;j<=MAX_N;j++){
			int N=tmp/POW;
			if(a[j-1][2*N]>=a[j-1][2*N+1]) a[j][N]=a[j-1][2*N],num[j][N]=num[j-1][2*N];
			else a[j][N]=a[j-1][2*N+1],num[j][N]=num[j-1][2*N+1];
			POW*=2;
		}
		//以上seg tree
		cout << num[MAX_N][0]+1 << ' ' << a[MAX_N][0] << '\n';
	}
}