#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1e5+5;
const int inf=0x3f3f3f3f3f3f3f3f;
ll n, tot, le, re, brr[N];
pair<ll, ll> arr[N], ans[N];
struct stu {
ll id, val, pre, ne;
}q[N];
void bui() {
tot = 2;
le = 1;
re = 2;
q[le].ne = re;
q[re].pre = le;
q[le].val = inf;
q[re].val = inf;
}
void add(ll p, ll id, ll val) {
tot++;
q[tot].id = id;
q[tot].val = val;
q[tot].ne = q[p].ne;
q[q[p].ne].pre = tot;
q[tot].pre = p;
q[p].ne = tot;
}
void del(ll p) {
q[q[p].pre].ne = q[p].ne;
q[q[p].ne].pre = q[p].pre;
}
void clear() {
memset(q, 0, sizeof(q));
le = re = tot = 0;
}
bool cmp(pair<ll, ll> x, pair<ll, ll> y) {
if(x.second == y.second) return x.first < y.first;
return x.second < y.second;
}
bool cmp2(pair<ll, ll> x, pair<ll, ll> y) {
return x.first < y.first;
}
int main() {
cin>>n;
for(int i=1;i<=n;i++) {
arr[i].first = i;
cin>>arr[i].second;
}
bui();
sort(arr+1,arr+n+1,cmp);
for(int i = 1; i <= n; i++) {
if(i == 1) {
add(le, arr[i].first, arr[i].second);
}
else add(brr[arr[i-1].first], arr[i].first, arr[i].second);
brr[arr[i].first]=tot;
}
sort(arr+1,arr+n+1,cmp2);
for(int i = n; i >= 2; i--) {
ll x = abs(arr[i].second - q[q[brr[i]].pre].val);
ll y = abs(arr[i].second - q[q[brr[i]].ne].val);
if(x<=y) {
ans[i].first = x;
ans[i].second = q[q[brr[i]].pre].id;
}
else {
ans[i].first = y;
ans[i].second = q[q[brr[i]].ne].id;
}
del(brr[i]);
}
for(int i=2; i<=n; i++) {
cout<<ans[i].first <<" "<< ans[i].second << endl;
}
return 0;
}