#include <bits/stdc++.h>
using namespace std;
struct car {
  long long s, t;
  int index;
};
car ans[1000];
car ele[1000];
bool cmp(car a, car b) { return a.s < b.s; }
int main() {
  int n;
  cin >> n;
  ele[0].s = 0;
  ele[0].t = 0;
  for (int i = 1; i <= n; i++) {
    int flag = 0;
    cin >> ele[i].s >> ele[i].t;
    ele[i].index = i;
    ans[ele[i].index] = ele[i];
    for (int j = 0; j < i; j++) {
      int eleas, eleae, elebs, elebe;
      eleas = ele[i].s;
      eleae = ele[i].t ? ele[i].s + ele[i].t - 1 : ele[i].s;
      elebs = ele[j].s;
      elebe = ele[j].t ? ele[j].s + ele[j].t - 1 : ele[j].s;
      if ((eleas >= elebs && eleas <= elebe) ||
          (eleae >= elebs && eleae <= elebe) ||
          (elebs >= eleas && elebs <= eleae) ||
          (elebe >= eleas && elebe <= eleae)) {
        flag = 1;
        break;
      }
    }
    if (flag)
      for (int j = 0; j <= i; j++) {
        if (j == 0) {
          ele[i].s = 1;
          ans[ele[i].index].s = 1;
        } else {
          ele[i].s = ele[j].s + ele[j].t;
          ans[ele[i].index] = ele[i];
        }
        int tflag = 0;
        for (int k = 0; k < i; k++) {
          long long eleas, eleae, elebs, elebe;
          eleas = ele[i].s;
          eleae = ele[i].t ? ele[i].s + ele[i].t - 1 : ele[i].s;
          elebs = ele[k].s;
          elebe = ele[k].t ? ele[k].s + ele[k].t - 1 : ele[k].s;
          if ((eleas >= elebs && eleas <= elebe) ||
              (eleae >= elebs && eleae <= elebe) ||
              (elebs >= eleas && elebs <= eleae) ||
              (elebe >= eleas && elebe <= eleae)) {
            tflag = 1;
            break;
          }
        }
        if (tflag)
          continue;
        else
          break;
      }
    sort(ele + 1, ele + i + 1, cmp);
  }
  for (int i = 1; i <= n; i++) {
    long long eles;
    long long elee;
    eles = ans[i].s;
    elee = ans[i].t ? ans[i].s + ans[i].t - 1 : ans[i].s;
    printf("%lld %lld\n", eles, elee);
  }
  return 0;
}
