#include <bits/stdc++.h>
using namespace std;
const long long inf = 2e9 + 7;
struct Node {
  long long s;
  long long len;
  bool operator<(const Node k) const { return s < k.s; }
};
int main() {
  set<Node> st;
  long long n, x, y;
  st.insert((Node){1ll, inf});
  scanf("%lld", &n);
  while (n--) {
    scanf("%lld%lld", &x, &y);
    bool flag = false;
    for (auto i : st) {
      if (i.s <= x && i.s + i.len >= x + y) {
        flag = true;
        Node tmp = i;
        st.erase(i);
        if (x != tmp.s) st.insert((Node){tmp.s, x - tmp.s});
        st.insert((Node){x + y, tmp.s + tmp.len - x - y});
        printf("%lld %lld\n", x, x + y - 1);
        break;
      }
    }
    if (flag == false) {
      for (auto i : st) {
        if (i.len >= y) {
          Node tmp = i;
          st.erase(i);
          st.insert((Node){tmp.s + y, tmp.len - y});
          printf("%lld %lld\n", tmp.s, tmp.s + y - 1);
          break;
        }
      }
    }
  }
}
