#include <bits/stdc++.h>
using namespace std;
int a[200005];
int b[200005], c[200005], d[200005];
int main() {
  int i, j, k;
  int n;
  scanf("%d", &n);
  for (i = 0; i < n; i++) scanf("%d", &a[i]);
  stack<int> s;
  s.push(0);
  for (i = 1; i < n; i++) {
    if (s.empty() || a[s.top()] < a[i])
      s.push(i);
    else {
      while (!s.empty() && a[s.top()] > a[i]) {
        b[s.top()] = i;
        s.pop();
      }
      s.push(i);
    }
  }
  while (!s.empty()) {
    b[s.top()] = n;
    s.pop();
  }
  s.push(n - 1);
  for (i = n - 2; i >= 0; i--) {
    if (s.empty() || a[s.top()] < a[i])
      s.push(i);
    else {
      while (!s.empty() && a[s.top()] > a[i]) {
        c[s.top()] = i;
        s.pop();
      }
      s.push(i);
    }
  }
  while (!s.empty()) {
    c[s.top()] = -1;
    s.pop();
  }
  for (i = 0; i < n; i++) b[i] = (b[i] - c[i] - 1);
  for (i = 0; i < n; i++) {
    d[b[i]] = max(d[b[i]], a[i]);
  }
  for (i = n - 1; i >= 1; i--) {
    d[i] = max(d[i + 1], d[i]);
  }
  for (i = 1; i <= n; i++) printf("%d ", d[i]);
  return 0;
}
