/* Rozwiazanie wzorcowe do zadania ZOL (Zolnierze)
 * Autor: Eryk Kopczynski
 * Opis: Implementacja na liscie (implicite), czas O(n)
 */

#include <set>
#include <stdio.h>
using namespace std;

#define MAXN 500000
int prev[MAXN+1], next[MAXN+1];

int err, N;

int main() {
  err=scanf("%d", &N);
  for(int k=1; k<=N; k++) prev[k] = k-1, next[k] = k+1;
  prev[1] = -1, next[N] = -1;
  
  for(int k=0; k<N; k++) {
    int i;
    err=scanf("%d", &i);
    printf("%d %d\n", prev[i], next[i]);
    if(prev[i] > 0) next[prev[i]] = next[i];
    if(next[i] > 0) prev[next[i]] = prev[i];
    }
  
  return 0;
  }
