import java.util.*;
import static java.lang.System.*;

public class Main{
  public static void main(String[] args){
	  Scanner sc = new Scanner(System.in);
	  
	  int N = sc.nextInt();
	  int[] A = new int[N];
	  int maxInt = 0;
	  int secondInt = 0;
	  boolean isEqual = false; //同じ値の最大値が２以上あるか
	  for(int i=0; i<N; i++) {
		  A[i] = sc.nextInt();
		  if (maxInt < A[i]) {
			  secondInt = maxInt;
			  maxInt = A[i];
			  isEqual = false;
		  } else if  (maxInt == A[i]){
			 isEqual = true;
		  } else {
			  if(A[i] > secondInt)
				  secondInt = A[i];
		  }
	  }
	  
	  for(int i=0; i<N; i++) {
		  if (maxInt > A[i]) {
			  out.println(maxInt);
		  } else if (isEqual) {
			  out.println(maxInt);
		  } else {
			  out.println(secondInt);
		  }
	  }
	  
  }
} import java.util.*; util.* java import static java.lang.System.*; import static java.lang.System.*; import static java.lang.System.*; public class Main{
  public static void main(String[] args){
	  Scanner sc = new Scanner(System.in);
	  
	  int N = sc.nextInt();
	  int[] A = new int[N];
	  int maxInt = 0;
	  int secondInt = 0;
	  boolean isEqual = false; //同じ値の最大値が２以上あるか
	  for(int i=0; i<N; i++) {
		  A[i] = sc.nextInt();
		  if (maxInt < A[i]) {
			  secondInt = maxInt;
			  maxInt = A[i];
			  isEqual = false;
		  } else if  (maxInt == A[i]){
			 isEqual = true;
		  } else {
			  if(A[i] > secondInt)
				  secondInt = A[i];
		  }
	  }
	  
	  for(int i=0; i<N; i++) {
		  if (maxInt > A[i]) {
			  out.println(maxInt);
		  } else if (isEqual) {
			  out.println(maxInt);
		  } else {
			  out.println(secondInt);
		  }
	  }
	  
  }
} Main public static void main(String[] args){
	  Scanner sc = new Scanner(System.in);
	  
	  int N = sc.nextInt();
	  int[] A = new int[N];
	  int maxInt = 0;
	  int secondInt = 0;
	  boolean isEqual = false; //同じ値の最大値が２以上あるか
	  for(int i=0; i<N; i++) {
		  A[i] = sc.nextInt();
		  if (maxInt < A[i]) {
			  secondInt = maxInt;
			  maxInt = A[i];
			  isEqual = false;
		  } else if  (maxInt == A[i]){
			 isEqual = true;
		  } else {
			  if(A[i] > secondInt)
				  secondInt = A[i];
		  }
	  }
	  
	  for(int i=0; i<N; i++) {
		  if (maxInt > A[i]) {
			  out.println(maxInt);
		  } else if (isEqual) {
			  out.println(maxInt);
		  } else {
			  out.println(secondInt);
		  }
	  }
	  
  } main {
	  Scanner sc = new Scanner(System.in);
	  
	  int N = sc.nextInt();
	  int[] A = new int[N];
	  int maxInt = 0;
	  int secondInt = 0;
	  boolean isEqual = false; //同じ値の最大値が２以上あるか
	  for(int i=0; i<N; i++) {
		  A[i] = sc.nextInt();
		  if (maxInt < A[i]) {
			  secondInt = maxInt;
			  maxInt = A[i];
			  isEqual = false;
		  } else if  (maxInt == A[i]){
			 isEqual = true;
		  } else {
			  if(A[i] > secondInt)
				  secondInt = A[i];
		  }
	  }
	  
	  for(int i=0; i<N; i++) {
		  if (maxInt > A[i]) {
			  out.println(maxInt);
		  } else if (isEqual) {
			  out.println(maxInt);
		  } else {
			  out.println(secondInt);
		  }
	  }
	  
  } 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 maxInt = 0; maxInt 0 int secondInt = 0; secondInt 0 boolean isEqual = false; isEqual false for(int i=0; i<N; i++) {
		  A[i] = sc.nextInt();
		  if (maxInt < A[i]) {
			  secondInt = maxInt;
			  maxInt = A[i];
			  isEqual = false;
		  } else if  (maxInt == A[i]){
			 isEqual = true;
		  } else {
			  if(A[i] > secondInt)
				  secondInt = A[i];
		  }
	  } int i=0; int i=0; i 0 i<N i N i++ i++ i {
		  A[i] = sc.nextInt();
		  if (maxInt < A[i]) {
			  secondInt = maxInt;
			  maxInt = A[i];
			  isEqual = false;
		  } else if  (maxInt == A[i]){
			 isEqual = true;
		  } else {
			  if(A[i] > secondInt)
				  secondInt = A[i];
		  }
	  } {
		  A[i] = sc.nextInt();
		  if (maxInt < A[i]) {
			  secondInt = maxInt;
			  maxInt = A[i];
			  isEqual = false;
		  } else if  (maxInt == A[i]){
			 isEqual = true;
		  } else {
			  if(A[i] > secondInt)
				  secondInt = A[i];
		  }
	  } A[i] = sc.nextInt() A[i] A i sc.nextInt() sc.nextInt sc if (maxInt < A[i]) {
			  secondInt = maxInt;
			  maxInt = A[i];
			  isEqual = false;
		  } else if  (maxInt == A[i]){
			 isEqual = true;
		  } else {
			  if(A[i] > secondInt)
				  secondInt = A[i];
		  } maxInt < A[i] maxInt A[i] A i {
			  secondInt = maxInt;
			  maxInt = A[i];
			  isEqual = false;
		  } secondInt = maxInt secondInt maxInt maxInt = A[i] maxInt A[i] A i isEqual = false isEqual false if  (maxInt == A[i]){
			 isEqual = true;
		  } else {
			  if(A[i] > secondInt)
				  secondInt = A[i];
		  } maxInt == A[i] maxInt A[i] A i {
			 isEqual = true;
		  } isEqual = true isEqual true {
			  if(A[i] > secondInt)
				  secondInt = A[i];
		  } if(A[i] > secondInt)
				  secondInt = A[i]; A[i] > secondInt A[i] A i secondInt secondInt = A[i] secondInt A[i] A i for(int i=0; i<N; i++) {
		  if (maxInt > A[i]) {
			  out.println(maxInt);
		  } else if (isEqual) {
			  out.println(maxInt);
		  } else {
			  out.println(secondInt);
		  }
	  } int i=0; int i=0; i 0 i<N i N i++ i++ i {
		  if (maxInt > A[i]) {
			  out.println(maxInt);
		  } else if (isEqual) {
			  out.println(maxInt);
		  } else {
			  out.println(secondInt);
		  }
	  } {
		  if (maxInt > A[i]) {
			  out.println(maxInt);
		  } else if (isEqual) {
			  out.println(maxInt);
		  } else {
			  out.println(secondInt);
		  }
	  } if (maxInt > A[i]) {
			  out.println(maxInt);
		  } else if (isEqual) {
			  out.println(maxInt);
		  } else {
			  out.println(secondInt);
		  } maxInt > A[i] maxInt A[i] A i {
			  out.println(maxInt);
		  } out.println(maxInt) out.println out maxInt if (isEqual) {
			  out.println(maxInt);
		  } else {
			  out.println(secondInt);
		  } isEqual {
			  out.println(maxInt);
		  } out.println(maxInt) out.println out maxInt {
			  out.println(secondInt);
		  } out.println(secondInt) out.println out secondInt String[] args args public class Main{
  public static void main(String[] args){
	  Scanner sc = new Scanner(System.in);
	  
	  int N = sc.nextInt();
	  int[] A = new int[N];
	  int maxInt = 0;
	  int secondInt = 0;
	  boolean isEqual = false; //同じ値の最大値が２以上あるか
	  for(int i=0; i<N; i++) {
		  A[i] = sc.nextInt();
		  if (maxInt < A[i]) {
			  secondInt = maxInt;
			  maxInt = A[i];
			  isEqual = false;
		  } else if  (maxInt == A[i]){
			 isEqual = true;
		  } else {
			  if(A[i] > secondInt)
				  secondInt = A[i];
		  }
	  }
	  
	  for(int i=0; i<N; i++) {
		  if (maxInt > A[i]) {
			  out.println(maxInt);
		  } else if (isEqual) {
			  out.println(maxInt);
		  } else {
			  out.println(secondInt);
		  }
	  }
	  
  }
} public class Main{
  public static void main(String[] args){
	  Scanner sc = new Scanner(System.in);
	  
	  int N = sc.nextInt();
	  int[] A = new int[N];
	  int maxInt = 0;
	  int secondInt = 0;
	  boolean isEqual = false; //同じ値の最大値が２以上あるか
	  for(int i=0; i<N; i++) {
		  A[i] = sc.nextInt();
		  if (maxInt < A[i]) {
			  secondInt = maxInt;
			  maxInt = A[i];
			  isEqual = false;
		  } else if  (maxInt == A[i]){
			 isEqual = true;
		  } else {
			  if(A[i] > secondInt)
				  secondInt = A[i];
		  }
	  }
	  
	  for(int i=0; i<N; i++) {
		  if (maxInt > A[i]) {
			  out.println(maxInt);
		  } else if (isEqual) {
			  out.println(maxInt);
		  } else {
			  out.println(secondInt);
		  }
	  }
	  
  }
} Main
import java.util.*;
import static java.lang.System.*;

public class Main{
  public static void main(String[] args){
	  Scanner sc = new Scanner(System.in);
	  
	  int N = sc.nextInt();
	  int[] A = new int[N];
	  int maxInt = 0;
	  int secondInt = 0;
	  boolean isEqual = false; //同じ値の最大値が２以上あるか
	  for(int i=0; i<N; i++) {
		  A[i] = sc.nextInt();
		  if (maxInt < A[i]) {
			  secondInt = maxInt;
			  maxInt = A[i];
			  isEqual = false;
		  } else if  (maxInt == A[i]){
			 isEqual = true;
		  } else {
			  if(A[i] > secondInt)
				  secondInt = A[i];
		  }
	  }
	  
	  for(int i=0; i<N; i++) {
		  if (maxInt > A[i]) {
			  out.println(maxInt);
		  } else if (isEqual) {
			  out.println(maxInt);
		  } else {
			  out.println(secondInt);
		  }
	  }
	  
  }
}