#include <bits/stdc++.h>
using namespace std;
vector<pair<int, int> > v;
int n, x, y;
int main() {
  v.push_back(make_pair(0, 0));
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    int flag = 0;
    scanf("%d %d", &x, &y);
    for (int j = 0; j <= (int)v.size() - 1; j++) {
      if (v[j].first > x + y - 1 || v[j].second < x) continue;
      flag = 1;
      break;
    }
    if (flag) {
      int flag2 = 0;
      for (int j = 0; j <= (int)v.size() - 2; j++) {
        if (v[j].second + y < v[j + 1].first) {
          printf("%d %d\n", v[j].second + 1, v[j].second + y);
          v.insert(v.begin() + j + 1,
                   make_pair(v[j].second + 1, v[j].second + y));
          flag2 = 1;
          break;
        }
      }
      if (!flag2) {
        printf("%d %d\n", v.back().second + 1, v.back().second + y);
        v.push_back(make_pair(v.back().second + 1, v.back().second + y));
      }
    } else {
      int z =
          upper_bound(v.begin(), v.end(), make_pair(x, x + y - 1)) - v.begin();
      v.insert(v.begin() + z, make_pair(x, x + y - 1));
      printf("%d %d\n", x, x + y - 1);
    }
  }
}
