Problem:
Score : 300 points

Problem Statement

You are given a sequence of length N: A_1, A_2, ..., A_N.
For each integer i between 1 and N (inclusive), answer the following question:

Find the maximum value among the N-1 elements other than A_i in the sequence.

Constraints

2 \leq N \leq 200000

1 \leq A_i \leq 200000

All values in input are integers.

Input

Input is given from Standard Input in the following format:

N
A_1
:
A_N

Output

Print N lines. The i-th line (1 \leq i \leq N) should contain the maximum value among the N-1 elements other than A_i in the sequence.

Sample Input 1

3
1
4
3

Sample Output 1

4
3
4

The maximum value among the two elements other than A_1, that is, A_2 = 4 and A_3 = 3, is 4.

The maximum value among the two elements other than A_2, that is, A_1 = 1 and A_3 = 3, is 3.

The maximum value among the two elements other than A_3, that is, A_1 = 1 and A_2 = 4, is 4.

Sample Input 2

2
5
5

Sample Output 2

5
5

Solution in C++14 (GCC 5.4.1) (judge verdict: Wrong Answer)

//
//  main.cpp
//  ABC124
//
//  Created by hiroaki on 2019/05/07.
//  Copyright © 2019年 hiroaki. All rights reserved.
//

#include <iostream>
#include <vector>
#include <map>
#include <iterator>
#include <set>
#include <cmath>
#include <algorithm>
#include <locale>

//pair sort firstに揃う

#define int long long
#define pb(n) push_back(n)
#define For(n,i) for(int (i)=0;(i)<(n);(i)++)
#define Pr(n) cout<<n<<endl;
#define F first
#define S second
#define vector2 vector<vector<int> >
#define ELM 100001 //問題によっては1000000001に変更
using namespace std;

signed  main(){
    int n;
    cin >> n;
    vector<int> a(n);
    For(n, i){
        cin >> a.at(i);
    }
    int maxe =*max_element(a.begin(), a.end());
//    cout<<a.end()-find(a.begin(), a.end(), max)<<endl;
    if (count(a.begin(), a.end(), maxe)>1) {
        For(n, i){
            Pr(maxe);
        }
    }else{
        For(n, i){
            if (i==a.end()-find(a.begin(), a.end(), maxe)-1) {
                if (i==0) {
                    Pr(*max_element(a.begin()+1, a.end()));
                }else if(i==n-1){
                    Pr(*max_element(a.begin(), a.end()-1));
                }else{
                    int ma,mb;
                    ma=*max_element(a.begin(), a.begin()+i-1);
                    mb=*max_element(a.begin()+i+1, a.end());
                    Pr(max(ma, mb));
                }
            }else{
                Pr(maxe);
            }
        }
    }
    return 0;
}