#include <stdio.h>

void swap (int *x, int *y){
	int temp = *x;
	*x = *y;
	*y = temp;
}

void rev (int A[], int start, int end){
	while (start < end){
		swap (&A[start], &A[end]);
		start++;
		end--;
	}
}

int main(){
	int n, A[105];
	scanf("%d", &n);
	
	for (int i = 0; i < n; i++){
		scanf("%d", &A[i]);
	}
	
	int i = n - 2;
	while (i >= 0 && A[i] < A[i + 1]){
		i--;
	}
	
	if (i < 0){
		printf("0\n");
	}
	else{
			int j = n - 1;
		while (A[j] > A[i]){
			j--;
		}
		
	swap(&A[i], &A[j]);
	
	rev(A,i + 1, n - 1);
	
	for(int k = 0; k < n; k++){
		printf("%d", A[k]);
		if (k < n) printf(" ");
		}
	}
	return 0;
}
