#include <bits/stdc++.h>
using namespace std;
#define STDIO 0
#if STDIO
#define fin cin
#define fout cout
#else
ifstream fin("harta.in");
ofstream fout("harta.out");
#endif
int n, i, j, grIn[102], grOut[102];
int rasp, ord[102];
static inline bool Cmp(int a, int b) {
return grIn[a] > grIn[b] || (grIn[a] == grIn[b] && grOut[a] > grOut[b]);
}
int main() {
if(STDIO) ios_base::sync_with_stdio(false);
fin.tie(nullptr);
fout.tie(nullptr);
fin >> n;
for(i = 1; i <= n; i++) {
fin >> grIn[i] >> grOut[i];
rasp += grIn[i];
ord[i] = i;
}
//sort(ord + 1, ord + n + 1, Cmp);
fout << rasp << "\n";
for(i = 1; i <= n; i++) {
if(grOut[i] == 0) continue;
sort(ord + 1, ord + n + 1, Cmp);
for(j = 1; j <= n; j++) {
if(i == ord[j]) continue;
if(grIn[ord[j]] > 0 && grOut[i] > 0) {
grIn[ord[j]]--;
grOut[i]--;
fout << ord[j] << " " << i << "\n";
}
}
}
return 0;
}