#include <bits/stdc++.h>
using namespace std;
int main() {
  ios_base::sync_with_stdio(false);
  int n;
  cin >> n;
  pair<int, int> a[n + 1], b[n + 1], c[n + 1], ans[n + 1];
  for (int i = 1; i <= n; i++) {
    cin >> a[i].second;
    a[i].first = 0;
  }
  b[1].first = 0;
  b[1].second = a[1].second;
  b[n].first = 0;
  b[n].second = a[n].second;
  for (int i = 2; i < n; i++) {
    if (a[i - 1].second == a[i + 1].second) {
      if (a[i].second != a[i - 1].second) {
        b[i].first = b[i - 1].first + 1;
        b[i].second = b[i - 1].second;
      } else {
        b[i].first = 0;
        b[i].second = a[i].second;
      }
    } else {
      b[i].first = 0;
      b[i].second = a[i].second;
    }
  }
  c[1].first = 0;
  c[1].second = a[1].second;
  c[n].first = 0;
  c[n].second = a[n].second;
  for (int i = n - 1; i > 1; i--) {
    if (a[i - 1].second == a[i + 1].second) {
      if (a[i].second != a[i - 1].second) {
        c[i].first = c[i + 1].first + 1;
        c[i].second = c[i + 1].second;
      } else {
        c[i].first = 0;
        c[i].second = a[i].second;
      }
    } else {
      c[i].first = 0;
      c[i].second = a[i].second;
    }
  }
  int m = 0;
  for (int i = 1; i <= n; i++) {
    if (b[i].first <= c[i].first) {
      ans[i].first = b[i].first;
      ans[i].second = b[i].second;
    } else {
      ans[i].first = c[i].first;
      ans[i].second = c[i].second;
    }
    m = max(m, min(b[i].first, c[i].first));
  }
  for (int i = 2; i < n; i++) {
    if (ans[i - 1].second == ans[i + 1].second) {
      if (ans[i].second != ans[i - 1].second) {
        cout << "-1\n";
        return 0;
      }
    }
  }
  cout << m << "\n";
  for (int i = 1; i <= n; i++) {
    cout << ans[i].second << " ";
  }
  cout << "\n";
}
