#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;

int main() {
    int N;
    int b;
    vector<int> a;//定义动态数组a
    while (scanf("%d",&N) != EOF) {
        for (int i = 0; i < N; ++i) {
            scanf("%d",&b);
            a.push_back(b);//向a的尾部添加N个元素
        }
        sort(a.begin(), a.end());//对a中的元素进行排序,升序排列
        printf("%d\n",a[N-1]);//先输出最大的元素
        a.pop_back();//将最大的元素从尾部删除
        if(a.empty()){//剩余元素为空时,输出-1
            printf("-1");
        }else{
            for(int i = 0;i < a.size();++i){
                printf("%d ",a[i]);
            }
        }
        printf("\n");
        
    }
    return 0;
}