import java.util.Arrays;
import java.util.Scanner;
class Main{


	static char[][] map;

	static long[][] c;
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);			//文字の入力
		int n = sc.nextInt();
		int[] a = new int[n];
		int[] d = new int[n];
		for(int i = 0;i < n;i++){
			a[i] = sc.nextInt();
			d[i] = a[i];
 		}
		
		Arrays.sort(d);
		int max = d[n-1];
		int judge = 0;
		if(d[n-1] == d[n-2]){
			judge = 1;
		}
		
		if(judge == 1){
			for(int i = 0;i < n;i++){
				System.out.println(max);
	 		}
		}else{
			for(int i = 0;i < n;i++){
				if(a[i] == max){
					System.out.println(d[n-2]);
				}else{
					System.out.println(max);

				}
	 		}
		}

		
		
	}
	


	static int gcd(int a,int b){				//最大公約数を返す
		if(b == 0){
			return a;
		}else{
			return gcd(b, a%b);
		}
	}
	static long gcd(long a,long b){
		if(b == 0){
			return a;
		}else{
			return gcd(b, a%b);
		}
	}



	static long lcm (long a, long b) {
		long g = gcd(a,b);
		return a/g*b;
	}




}



class Pair implements Comparable{
	int from;
	int end;
	@Override
	public int compareTo(Object other) {
		Pair otherpair = (Pair)other;

		return   end- otherpair.end;
	}








}



 import java.util.Arrays; Arrays java.util import java.util.Scanner; Scanner java.util class Main{


	static char[][] map;

	static long[][] c;
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);			//文字の入力
		int n = sc.nextInt();
		int[] a = new int[n];
		int[] d = new int[n];
		for(int i = 0;i < n;i++){
			a[i] = sc.nextInt();
			d[i] = a[i];
 		}
		
		Arrays.sort(d);
		int max = d[n-1];
		int judge = 0;
		if(d[n-1] == d[n-2]){
			judge = 1;
		}
		
		if(judge == 1){
			for(int i = 0;i < n;i++){
				System.out.println(max);
	 		}
		}else{
			for(int i = 0;i < n;i++){
				if(a[i] == max){
					System.out.println(d[n-2]);
				}else{
					System.out.println(max);

				}
	 		}
		}

		
		
	}
	


	static int gcd(int a,int b){				//最大公約数を返す
		if(b == 0){
			return a;
		}else{
			return gcd(b, a%b);
		}
	}
	static long gcd(long a,long b){
		if(b == 0){
			return a;
		}else{
			return gcd(b, a%b);
		}
	}



	static long lcm (long a, long b) {
		long g = gcd(a,b);
		return a/g*b;
	}




} Main static char[][] map; map static long[][] c; c public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);			//文字の入力
		int n = sc.nextInt();
		int[] a = new int[n];
		int[] d = new int[n];
		for(int i = 0;i < n;i++){
			a[i] = sc.nextInt();
			d[i] = a[i];
 		}
		
		Arrays.sort(d);
		int max = d[n-1];
		int judge = 0;
		if(d[n-1] == d[n-2]){
			judge = 1;
		}
		
		if(judge == 1){
			for(int i = 0;i < n;i++){
				System.out.println(max);
	 		}
		}else{
			for(int i = 0;i < n;i++){
				if(a[i] == max){
					System.out.println(d[n-2]);
				}else{
					System.out.println(max);

				}
	 		}
		}

		
		
	} main {
		Scanner sc = new Scanner(System.in);			//文字の入力
		int n = sc.nextInt();
		int[] a = new int[n];
		int[] d = new int[n];
		for(int i = 0;i < n;i++){
			a[i] = sc.nextInt();
			d[i] = a[i];
 		}
		
		Arrays.sort(d);
		int max = d[n-1];
		int judge = 0;
		if(d[n-1] == d[n-2]){
			judge = 1;
		}
		
		if(judge == 1){
			for(int i = 0;i < n;i++){
				System.out.println(max);
	 		}
		}else{
			for(int i = 0;i < n;i++){
				if(a[i] == max){
					System.out.println(d[n-2]);
				}else{
					System.out.println(max);

				}
	 		}
		}

		
		
	} Scanner sc = new Scanner(System.in); sc new Scanner(System.in) int n = sc.nextInt(); n sc.nextInt() sc.nextInt sc int[] a = new int[n]; a new int[n] n int[] d = new int[n]; d new int[n] n for(int i = 0;i < n;i++){
			a[i] = sc.nextInt();
			d[i] = a[i];
 		} int i = 0; int i = 0; i 0 i < n i n i++ i++ i {
			a[i] = sc.nextInt();
			d[i] = a[i];
 		} {
			a[i] = sc.nextInt();
			d[i] = a[i];
 		} a[i] = sc.nextInt() a[i] a i sc.nextInt() sc.nextInt sc d[i] = a[i] d[i] d i a[i] a i Arrays.sort(d) Arrays.sort Arrays d int max = d[n-1]; max d[n-1] d n-1 n 1 int judge = 0; judge 0 if(d[n-1] == d[n-2]){
			judge = 1;
		} d[n-1] == d[n-2] d[n-1] d n-1 n 1 d[n-2] d n-2 n 2 {
			judge = 1;
		} judge = 1 judge 1 if(judge == 1){
			for(int i = 0;i < n;i++){
				System.out.println(max);
	 		}
		}else{
			for(int i = 0;i < n;i++){
				if(a[i] == max){
					System.out.println(d[n-2]);
				}else{
					System.out.println(max);

				}
	 		}
		} judge == 1 judge 1 {
			for(int i = 0;i < n;i++){
				System.out.println(max);
	 		}
		} for(int i = 0;i < n;i++){
				System.out.println(max);
	 		} int i = 0; int i = 0; i 0 i < n i n i++ i++ i {
				System.out.println(max);
	 		} {
				System.out.println(max);
	 		} System.out.println(max) System.out.println System.out System System.out max {
			for(int i = 0;i < n;i++){
				if(a[i] == max){
					System.out.println(d[n-2]);
				}else{
					System.out.println(max);

				}
	 		}
		} for(int i = 0;i < n;i++){
				if(a[i] == max){
					System.out.println(d[n-2]);
				}else{
					System.out.println(max);

				}
	 		} int i = 0; int i = 0; i 0 i < n i n i++ i++ i {
				if(a[i] == max){
					System.out.println(d[n-2]);
				}else{
					System.out.println(max);

				}
	 		} {
				if(a[i] == max){
					System.out.println(d[n-2]);
				}else{
					System.out.println(max);

				}
	 		} if(a[i] == max){
					System.out.println(d[n-2]);
				}else{
					System.out.println(max);

				} a[i] == max a[i] a i max {
					System.out.println(d[n-2]);
				} System.out.println(d[n-2]) System.out.println System.out System System.out d[n-2] d n-2 n 2 {
					System.out.println(max);

				} System.out.println(max) System.out.println System.out System System.out max String[] args args static int gcd(int a,int b){				//最大公約数を返す
		if(b == 0){
			return a;
		}else{
			return gcd(b, a%b);
		}
	} gcd {				//最大公約数を返す
		if(b == 0){
			return a;
		}else{
			return gcd(b, a%b);
		}
	} if(b == 0){
			return a;
		}else{
			return gcd(b, a%b);
		} b == 0 b 0 {
			return a;
		} return a; a {
			return gcd(b, a%b);
		} return gcd(b, a%b); gcd(b, a%b) gcd b a%b a b int a a int b b static long gcd(long a,long b){
		if(b == 0){
			return a;
		}else{
			return gcd(b, a%b);
		}
	} gcd {
		if(b == 0){
			return a;
		}else{
			return gcd(b, a%b);
		}
	} if(b == 0){
			return a;
		}else{
			return gcd(b, a%b);
		} b == 0 b 0 {
			return a;
		} return a; a {
			return gcd(b, a%b);
		} return gcd(b, a%b); gcd(b, a%b) gcd b a%b a b long a a long b b static long lcm (long a, long b) {
		long g = gcd(a,b);
		return a/g*b;
	} lcm {
		long g = gcd(a,b);
		return a/g*b;
	} long g = gcd(a,b); g gcd(a,b) gcd a b return a/g*b; a/g*b a/g a g b long a a long b b class Pair implements Comparable{
	int from;
	int end;
	@Override
	public int compareTo(Object other) {
		Pair otherpair = (Pair)other;

		return   end- otherpair.end;
	}








} Pair int from; from int end; end @Override
	public int compareTo(Object other) {
		Pair otherpair = (Pair)other;

		return   end- otherpair.end;
	} compareTo {
		Pair otherpair = (Pair)other;

		return   end- otherpair.end;
	} Pair otherpair = (Pair)other; otherpair (Pair)other return   end- otherpair.end; end- otherpair.end end otherpair.end otherpair otherpair.end Object other other Comparable
import java.util.Arrays;
import java.util.Scanner;
class Main{


	static char[][] map;

	static long[][] c;
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);			//文字の入力
		int n = sc.nextInt();
		int[] a = new int[n];
		int[] d = new int[n];
		for(int i = 0;i < n;i++){
			a[i] = sc.nextInt();
			d[i] = a[i];
 		}
		
		Arrays.sort(d);
		int max = d[n-1];
		int judge = 0;
		if(d[n-1] == d[n-2]){
			judge = 1;
		}
		
		if(judge == 1){
			for(int i = 0;i < n;i++){
				System.out.println(max);
	 		}
		}else{
			for(int i = 0;i < n;i++){
				if(a[i] == max){
					System.out.println(d[n-2]);
				}else{
					System.out.println(max);

				}
	 		}
		}

		
		
	}
	


	static int gcd(int a,int b){				//最大公約数を返す
		if(b == 0){
			return a;
		}else{
			return gcd(b, a%b);
		}
	}
	static long gcd(long a,long b){
		if(b == 0){
			return a;
		}else{
			return gcd(b, a%b);
		}
	}



	static long lcm (long a, long b) {
		long g = gcd(a,b);
		return a/g*b;
	}




}



class Pair implements Comparable{
	int from;
	int end;
	@Override
	public int compareTo(Object other) {
		Pair otherpair = (Pair)other;

		return   end- otherpair.end;
	}








}




