//C++11
#include <iostream>
#include <set>
#include <map>
#include <algorithm>

#define REP(i,n) for(int i=0;i<(n);i++)

using namespace std;

struct av{ int a,v; };

set<av> lst;

bool operator<(const av &dat1, const av &dat2)
{
    if(dat1.v==dat2.v)
        return dat1.a>dat2.a;
    return dat1.v<dat2.v;
}

void add(av dat_new)
{
    auto dat_old = find_if(lst.begin(), lst.end(), [dat_new](av i){return i.a==dat_new.a;});
    if(dat_old==lst.end()) 
        lst.insert(dat_new);
    else{
        dat_new.v = (*dat_old).v + dat_new.v;
        if(dat_new.v<0) dat_new.v = 0;
        lst.erase(dat_old);
        lst.insert(dat_new);
    }
    auto res = lst.end();
    res--;
    cout << (*res).a << " " << (*res).v << endl;
}

int main(void)
{
    int n, q;
    cin >> n >> q;
    REP(i,q){
        av dat;
        cin >> dat.a >> dat.v;
        add(dat);
    }
    return 0;
}