#define _USE_MATH_DEFINES #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; typedef unsigned long long ull; typedef pair i_i; typedef pair ll_i; typedef pair d_i; typedef pair ll_ll; typedef pair d_d; struct edge { int u, v; ll w; }; ll MOD = 1000000007; ll _MOD = 1000000009; double EPS = 1e-10; int main() { int n; cin >> n; vector a(n); for (int i = 0; i < n; i++) cin >> a[i]; map r; for (int i = 0; i < n; i++) r[a[i]] = i; set s; vector b(n); for (int i = 0; i < n; i++) { s.insert(a[i]); auto it = s.end(); it--; b[i] = *it; if (r[a[i]] == i) s.erase(a[i]); } for (int i = 0; i < n; i++) cout << b[i] << (i + 1 < n ? ' ' : '\n'); }