#include <bits/stdc++.h>

using namespace std;

int main(){
  int n; cin >> n;
  pair<int,int> a(n);
  int m=0; //配列a(n)の要素の最大値
  for(int i=0;i<n;i++){
    cin >> a[i].second;
    a[i].first=i;
    m=max(m,a[i].second);
  }
  int count=0;
  for(int i=0;i<n;i++){
    if(a[i].second==m){
      count++;
    }
  }
  int M=0; //配列a(n)の要素のうち、mの次の最大値
  for(int i=0;i<n;i++){
    if(a[i].second!=m){
      M=max(M,a[i].second);
    }
  }
  if(count>=2){ //もし最大値をとる要素が２つ以上あれば、最大値mを出力
    for(int i=0;i<n;i++){
      cout << m << endl;
    }
  }
  else{ //最大値をとる要素が１つのみならば、Mを出力
    for(int i=0;i<n;i++){
      if(a[i].second==m){
        cout << M << endl;
      }
      else{
        cout << m << endl;
      }
    }
  }
  
}
