#include <bits/stdc++.h>
using namespace std;
const int maxn = 100005;
int degree[maxn], xors[maxn];
void dfs(int x) {
  cout << x << " " << xors[x] << endl;
  xors[xors[x]] ^= x;
  degree[x]--;
  degree[xors[x]]--;
  if (degree[xors[x]] == 1) dfs(xors[x]);
}
int main() {
  ios::sync_with_stdio(false);
  int n;
  scanf("%d", &n);
  int i;
  long long sum = 0;
  for (i = 0; i < n; i++) {
    scanf("%d%d", &degree[i], &xors[i]);
    sum += degree[i];
  }
  cout << sum / 2 << endl;
  for (i = 0; i < n; i++) {
    if (degree[i] == 1) dfs(i);
  }
  return 0;
}
