#include <bits/stdc++.h>
#pragma comment(linker, "/stack:640000000")
using namespace std;
const double EPS = 1e-9;
const int INF = 0x7f7f7f7f;
const double PI = acos(-1.0);
template <class T>
inline T _abs(T n) {
  return ((n) < 0 ? -(n) : (n));
}
template <class T>
inline T _max(T a, T b) {
  return (!((a) < (b)) ? (a) : (b));
}
template <class T>
inline T _min(T a, T b) {
  return (((a) < (b)) ? (a) : (b));
}
template <class T>
inline T _swap(T& a, T& b) {
  a = a ^ b;
  b = a ^ b;
  a = a ^ b;
}
template <class T>
inline T gcd(T a, T b) {
  return (b) == 0 ? (a) : gcd((b), ((a) % (b)));
}
template <class T>
inline T lcm(T a, T b) {
  return ((a) / gcd((a), (b)) * (b));
}
template <typename T>
string NumberToString(T Number) {
  ostringstream second;
  second << Number;
  return second.str();
}
struct debugger {
  template <typename T>
  debugger& operator,(const T& v) {
    cerr << v << " ";
    return *this;
  }
} dbg;
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  int n;
  while (cin >> n) {
    priority_queue<pair<int, string> > pq;
    for (int i = (int)(1); i <= (int)(n); i++) {
      string st;
      int no;
      cin >> st >> no;
      pq.push(make_pair(-no, st));
    }
    vector<pair<int, string> > v;
    int hh = 1;
    int flg = 1;
    while (!pq.empty()) {
      pair<int, string> p = pq.top();
      pq.pop();
      p.first *= -1;
      if (p.first == 0) {
        v.push_back(make_pair(hh, p.second));
        hh++;
        continue;
      }
      vector<int> tmp;
      for (int i = (int)(0); i <= (int)((int)v.size() - 1); i++) {
        tmp.push_back(v[i].first);
      }
      sort(tmp.rbegin(), tmp.rend());
      if (tmp.size() < p.first) {
        flg = 0;
        break;
      }
      int tmpNo = tmp[p.first - 1];
      for (int i = (int)(0); i <= (int)((int)v.size() - 1); i++) {
        if (v[i].first >= tmpNo) v[i].first += 1;
      }
      v.push_back(make_pair(tmpNo, p.second));
    }
    if (flg) {
      for (int i = (int)(0); i <= (int)(n - 1); i++) {
        cout << v[i].second << " " << v[i].first << "\n";
      }
    } else
      printf("-1\n");
  }
  return 0;
}
