#include <bits/stdc++.h>
using namespace std;
int myGCD(int a, int b) {
  if (b == 0)
    return a;
  else
    return myGCD(b, a % b);
}
int myPOW(int a, int b) {
  int val;
  if (b == 0) return 1;
  if (b == 1) return a;
  val = myPOW(a, b / 2);
  val = val * val;
  return (b % 2) ? val * a : val;
}
typedef struct man {
  char name[15];
  int count;
  int ht;
} man;
int comp(const void *a, const void *b) {
  man al = *(man *)a;
  man bl = *(man *)b;
  return (al.count > bl.count) ? 1 : -1;
}
int main() {
  int n;
  scanf("%d", &n);
  man line[n + 5];
  int i;
  int arr[n + 5];
  for (i = 0; i < n; i++) {
    scanf("%s%d", &line[i].name, &line[i].count);
    arr[i] = i;
  }
  arr[i] = i;
  qsort(line, n, sizeof(line[0]), comp);
  int j;
  for (i = n - 1; i >= 0; i--) {
    if (line[i].count >= i + 1) {
      printf("-1\n");
      return 0;
    } else {
      j = n + 1;
      while (line[i].count > -1) {
        do {
          j--;
        } while ((j > 0 && arr[j] == 0));
        line[i].count--;
      }
      line[i].ht = j;
      arr[line[i].ht] = 0;
    }
  }
  for (i = 0; i < n; i++) printf("%s %d\n", line[i].name, line[i].ht);
  return 0;
}
