#include <bits/stdc++.h>
using namespace std;
int n, m, is, no_mn, no_mx;
struct _ab {
  int first, second, pos;
} ab[100001];
struct _res {
  int first, second, pos;
} res[100001];
const bool operator<(const _ab& aa, const _ab& bb) {
  if (aa.first == bb.first) return aa.second > bb.second;
  return aa.first < bb.first;
}
const bool operator<(const _res& aa, const _res& bb) { return aa.pos < bb.pos; }
int main() {
  scanf("%d%d", &n, &m);
  for (int i = (0); i < (m); ++i) {
    scanf("%d%d", &ab[i].first, &ab[i].second);
    ab[i].pos = i;
  }
  sort(ab, ab + m);
  is = 2;
  no_mn = 2;
  no_mx = 3;
  for (int i = (0); i < (m); ++i) {
    res[i].pos = ab[i].pos;
    if (ab[i].second) {
      res[i].first = 1;
      res[i].second = is;
      ++is;
      continue;
    }
    if (no_mx >= is) {
      cout << -1;
      return 0;
    }
    res[i].first = no_mn;
    res[i].second = no_mx;
    ++no_mn;
    if (no_mn == no_mx) {
      no_mn = 2;
      ++no_mx;
    }
  }
  sort(res, res + m);
  for (int i = (0); i < (m); ++i)
    printf("%d %d ", res[i].first, res[i].second), printf("\n");
  return 0;
}
