#include #include #include #define maxn 5000 using namespace std; int n; vector< int > deg[maxn]; vector< pair< int, int > > tmp; void load() { scanf( "%d", &n ); for( int i = 0; i < n; ++i ) { int t; scanf( "%d", &t ); deg[t].push_back( i ); } } void spoji( int i ) { int a = deg[i].back(), ii = i; deg[i].pop_back(); for( int j = 0; j < ii; ++j ) { for(; deg[i].empty(); --i ); printf( "%d %d\n", a+1, deg[i].back()+1 ); if( i ) tmp.push_back( make_pair( i-1, deg[i].back() ) ); deg[i].pop_back(); } while( tmp.size() ) { deg[ tmp.back().first ].push_back( tmp.back().second ); tmp.pop_back(); } } int main(void) { load(); for( int i = n-1; i >= 0; --i ) for( ; !deg[i].empty(); spoji( i ) ); return 0; }