import java.util.*;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws Exception {
        // 入力受取
        BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
        String line1 = input.readLine();

        int N = Integer.parseInt(line1);
        int[] A = new int[N];
        int max1 = 0;
        int max2 = 0;
        for(int i=0;i<N;i++) {
            A[i] = Integer.parseInt(input.readLine());
            // 1番目に大きい値と2番目に大きい値を計算しておく
            if(max1<=A[i]) {
                max2 = max1;
                max1 = A[i];
            } else if(max2<=A[i]) {
                max2 = A[i];
            }
        }

        for(int i=0;i<N;i++) {
            // 1番目に大きい数と同じなら2番めに大きい数を出力する
            if(A[i]==max1) {
                System.out.println(max2);
            } else {
                System.out.println(max1);
            }
        }

    }
} import java.util.*; util.* java import java.io.BufferedReader; BufferedReader java.io import java.io.IOException; IOException java.io import java.io.InputStreamReader; InputStreamReader java.io public class Main {
    public static void main(String[] args) throws Exception {
        // 入力受取
        BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
        String line1 = input.readLine();

        int N = Integer.parseInt(line1);
        int[] A = new int[N];
        int max1 = 0;
        int max2 = 0;
        for(int i=0;i<N;i++) {
            A[i] = Integer.parseInt(input.readLine());
            // 1番目に大きい値と2番目に大きい値を計算しておく
            if(max1<=A[i]) {
                max2 = max1;
                max1 = A[i];
            } else if(max2<=A[i]) {
                max2 = A[i];
            }
        }

        for(int i=0;i<N;i++) {
            // 1番目に大きい数と同じなら2番めに大きい数を出力する
            if(A[i]==max1) {
                System.out.println(max2);
            } else {
                System.out.println(max1);
            }
        }

    }
} Main public static void main(String[] args) throws Exception {
        // 入力受取
        BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
        String line1 = input.readLine();

        int N = Integer.parseInt(line1);
        int[] A = new int[N];
        int max1 = 0;
        int max2 = 0;
        for(int i=0;i<N;i++) {
            A[i] = Integer.parseInt(input.readLine());
            // 1番目に大きい値と2番目に大きい値を計算しておく
            if(max1<=A[i]) {
                max2 = max1;
                max1 = A[i];
            } else if(max2<=A[i]) {
                max2 = A[i];
            }
        }

        for(int i=0;i<N;i++) {
            // 1番目に大きい数と同じなら2番めに大きい数を出力する
            if(A[i]==max1) {
                System.out.println(max2);
            } else {
                System.out.println(max1);
            }
        }

    } main {
        // 入力受取
        BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
        String line1 = input.readLine();

        int N = Integer.parseInt(line1);
        int[] A = new int[N];
        int max1 = 0;
        int max2 = 0;
        for(int i=0;i<N;i++) {
            A[i] = Integer.parseInt(input.readLine());
            // 1番目に大きい値と2番目に大きい値を計算しておく
            if(max1<=A[i]) {
                max2 = max1;
                max1 = A[i];
            } else if(max2<=A[i]) {
                max2 = A[i];
            }
        }

        for(int i=0;i<N;i++) {
            // 1番目に大きい数と同じなら2番めに大きい数を出力する
            if(A[i]==max1) {
                System.out.println(max2);
            } else {
                System.out.println(max1);
            }
        }

    } BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); input new BufferedReader(new InputStreamReader(System.in)) String line1 = input.readLine(); line1 input.readLine() input.readLine input int N = Integer.parseInt(line1); N Integer.parseInt(line1) Integer.parseInt Integer line1 int[] A = new int[N]; A new int[N] N int max1 = 0; max1 0 int max2 = 0; max2 0 for(int i=0;i<N;i++) {
            A[i] = Integer.parseInt(input.readLine());
            // 1番目に大きい値と2番目に大きい値を計算しておく
            if(max1<=A[i]) {
                max2 = max1;
                max1 = A[i];
            } else if(max2<=A[i]) {
                max2 = A[i];
            }
        } int i=0; int i=0; i 0 i<N i N i++ i++ i {
            A[i] = Integer.parseInt(input.readLine());
            // 1番目に大きい値と2番目に大きい値を計算しておく
            if(max1<=A[i]) {
                max2 = max1;
                max1 = A[i];
            } else if(max2<=A[i]) {
                max2 = A[i];
            }
        } {
            A[i] = Integer.parseInt(input.readLine());
            // 1番目に大きい値と2番目に大きい値を計算しておく
            if(max1<=A[i]) {
                max2 = max1;
                max1 = A[i];
            } else if(max2<=A[i]) {
                max2 = A[i];
            }
        } A[i] = Integer.parseInt(input.readLine()) A[i] A i Integer.parseInt(input.readLine()) Integer.parseInt Integer input.readLine() input.readLine input if(max1<=A[i]) {
                max2 = max1;
                max1 = A[i];
            } else if(max2<=A[i]) {
                max2 = A[i];
            } max1<=A[i] max1 A[i] A i {
                max2 = max1;
                max1 = A[i];
            } max2 = max1 max2 max1 max1 = A[i] max1 A[i] A i if(max2<=A[i]) {
                max2 = A[i];
            } max2<=A[i] max2 A[i] A i {
                max2 = A[i];
            } max2 = A[i] max2 A[i] A i for(int i=0;i<N;i++) {
            // 1番目に大きい数と同じなら2番めに大きい数を出力する
            if(A[i]==max1) {
                System.out.println(max2);
            } else {
                System.out.println(max1);
            }
        } int i=0; int i=0; i 0 i<N i N i++ i++ i {
            // 1番目に大きい数と同じなら2番めに大きい数を出力する
            if(A[i]==max1) {
                System.out.println(max2);
            } else {
                System.out.println(max1);
            }
        } {
            // 1番目に大きい数と同じなら2番めに大きい数を出力する
            if(A[i]==max1) {
                System.out.println(max2);
            } else {
                System.out.println(max1);
            }
        } if(A[i]==max1) {
                System.out.println(max2);
            } else {
                System.out.println(max1);
            } A[i]==max1 A[i] A i max1 {
                System.out.println(max2);
            } System.out.println(max2) System.out.println System.out System System.out max2 {
                System.out.println(max1);
            } System.out.println(max1) System.out.println System.out System System.out max1 String[] args args public class Main {
    public static void main(String[] args) throws Exception {
        // 入力受取
        BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
        String line1 = input.readLine();

        int N = Integer.parseInt(line1);
        int[] A = new int[N];
        int max1 = 0;
        int max2 = 0;
        for(int i=0;i<N;i++) {
            A[i] = Integer.parseInt(input.readLine());
            // 1番目に大きい値と2番目に大きい値を計算しておく
            if(max1<=A[i]) {
                max2 = max1;
                max1 = A[i];
            } else if(max2<=A[i]) {
                max2 = A[i];
            }
        }

        for(int i=0;i<N;i++) {
            // 1番目に大きい数と同じなら2番めに大きい数を出力する
            if(A[i]==max1) {
                System.out.println(max2);
            } else {
                System.out.println(max1);
            }
        }

    }
} public class Main {
    public static void main(String[] args) throws Exception {
        // 入力受取
        BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
        String line1 = input.readLine();

        int N = Integer.parseInt(line1);
        int[] A = new int[N];
        int max1 = 0;
        int max2 = 0;
        for(int i=0;i<N;i++) {
            A[i] = Integer.parseInt(input.readLine());
            // 1番目に大きい値と2番目に大きい値を計算しておく
            if(max1<=A[i]) {
                max2 = max1;
                max1 = A[i];
            } else if(max2<=A[i]) {
                max2 = A[i];
            }
        }

        for(int i=0;i<N;i++) {
            // 1番目に大きい数と同じなら2番めに大きい数を出力する
            if(A[i]==max1) {
                System.out.println(max2);
            } else {
                System.out.println(max1);
            }
        }

    }
} Main
import java.util.*;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws Exception {
        // 入力受取
        BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
        String line1 = input.readLine();

        int N = Integer.parseInt(line1);
        int[] A = new int[N];
        int max1 = 0;
        int max2 = 0;
        for(int i=0;i<N;i++) {
            A[i] = Integer.parseInt(input.readLine());
            // 1番目に大きい値と2番目に大きい値を計算しておく
            if(max1<=A[i]) {
                max2 = max1;
                max1 = A[i];
            } else if(max2<=A[i]) {
                max2 = A[i];
            }
        }

        for(int i=0;i<N;i++) {
            // 1番目に大きい数と同じなら2番めに大きい数を出力する
            if(A[i]==max1) {
                System.out.println(max2);
            } else {
                System.out.println(max1);
            }
        }

    }
}
