#include<bits/stdc++.h>
typedef long long int ll;
typedef unsigned long long int ull;
#define BIG_NUM 2000000000
#define MOD 1000000007
#define EPS 0.000000001
using namespace std;


int N;
int table_index;
int table[362880][9];
int tmp_array[9];
bool used[10];
map<ll,int> MAP;

void recursive(int index){

	if(index == N){

		ll num = 0;

		for(int i = 0; i < N; i++){
			table[table_index][i] = tmp_array[i];
			num = 10*num+tmp_array[i];
		}

		MAP[num] = table_index++;
		return;
	}

	for(int i = 1; i <= N; i++){

		if(used[i])continue;
		tmp_array[index] = i;
		used[i] = true;
		recursive(index+1);
		used[i] = false;
	}
}

void output(int index){

	printf("%d",table[index][0]);
	for(int i = 1; i < N; i++){
		printf(" %d",table[index][i]);
	}
	printf("\n");
}


int main(){

	scanf("%d",&N);

	int tmp;

	if(N == 1){

		scanf("%d",&tmp);

		printf("1\n");
		return 0;
	}

	table_index = 0;

	for(int i = 1; i <= N; i++)used[i] = false;

	for(int i = 1; i <= N; i++){

		tmp_array[0] = i;
		used[i] = true;
		recursive(1);

		used[i] = false;
	}

	ll num = 0;
	for(int i = 0; i < N; i++){
		scanf("%d",&tmp);
		num = 10*num+tmp;
	}

	int index = MAP[num];

	if(index > 0){
		output(index-1);
	}
	output(index);
	if(index < table_index-1){
		output(index+1);
	}

	return 0;
}


