def shuttlesort array
  1.step(array.size - 1, 1) do |i|
    target = array[i]
    insertion = nil;
    
    #挿入場所が見つかるまで右にずらす
    i.step(0, -1) do |j|
      insertion = j
      #釣った数が異なる場合
      if array[j - 1][1] > target[1] then
        break
      end
      #釣った数が同じ場合
      break if array[j - 1][1] == target[1] && array[j - 1][0] < target[0]
      array[j] = array[j - 1]
    end
    
    array[insertion] = target
  end
  array 
end

#入力を受け取る
n, q = $stdin.gets.chomp.split(" ").map(&:to_i)
#データ量に応じてハッシュテーブル長を変更する
HASH_LENGTH = (n < 100000)? 100 : 10000

hash = Array.new(HASH_LENGTH).map{Array.new}
#各テーブルのトップを保持する
max = Array.new(HASH_LENGTH).map{Array.new(2).fill(-1)}

q.times do
  a, v = $stdin.gets.chomp.split(" ").map(&:to_i)
  #入力値をもとにハッシュテーブルを更新する
  key = a % HASH_LENGTH
  new = nil
  if new = hash[key].select{|sa, sv| sa == a}[0]
    new[1] += v
  else
    hash[key] << [a, v]
    new = [a, v]
  end
  hash[key] = shuttlesort hash[key]
  
  #対応キーのトップの更新
  max[key] = hash[key][0]

  #トップを取得する
  top = max.sort do |m1, m2|
    if m1[1] != m2[1]
      m2[1] <=> m1[1]
    else
      m1[0] <=> m2[0]
    end
  end[0]

  printf "%d %d\n", top[0], top[1]
end