#include <bits/stdc++.h>
using namespace std;
struct node {
  string name;
  int a;
  int h;
};
node op[3010];
bool cmp(node x, node y) { return x.a < y.a; }
int main() {
  int n;
  while (scanf("%d", &n) != EOF) {
    for (int i = 1; i <= n; i++) {
      cin >> op[i].name >> op[i].a;
      op[i].h = 0;
    }
    sort(op + 1, op + 1 + n, cmp);
    int flag = 1;
    if (op[1].a != 0) flag = 0;
    if (flag)
      for (int i = 1; i <= n; i++) {
        if (i - 1 < op[i].a) {
          flag = 0;
          break;
        }
        op[i].h = i - op[i].a;
        for (int k = 1; k < i; k++) {
          if (op[k].h >= op[i].h) ++op[k].h;
        }
      }
    if (flag == 0)
      printf("-1\n");
    else
      for (int i = 1; i <= n; i++) {
        cout << op[i].name << " " << op[i].h << endl;
      }
  }
  return 0;
}
