#include <bits/stdc++.h>
using namespace std;
const int maxn = 500500;
int s[maxn], ans[maxn];
int gao(int st, int en) {
  if (s[st] == 0 && s[en] == 0) {
    for (int i = st; i <= en; i++) ans[i] = 0;
    return (en - st) / 2;
  } else if (s[st] == 0 && s[en] == 1) {
    int mid = (en - st + 1) / 2;
    for (int i = 0; i < mid; i++) ans[st + i] = 0;
    for (int i = st + mid; i <= en; i++) ans[i] = 1;
    return (en - st) / 2;
  } else if (s[st] == 1 && s[en] == 0) {
    int mid = (en - st + 1) / 2;
    for (int i = 0; i < mid; i++) ans[st + i] = 1;
    for (int i = st + mid; i <= en; i++) ans[i] = 0;
    return (en - st) / 2;
  } else {
    for (int i = st; i <= en; i++) ans[i] = 1;
    return (en - st) / 2;
  }
}
int main() {
  int n;
  while (scanf("%d", &n) != EOF) {
    for (int i = 0; i < n; i++) scanf("%d", &s[i]);
    for (int i = 0; i < n; i++) ans[i] = s[i];
    int st = -1, en = -1, ret = 0;
    s[n] = s[n - 1];
    for (int i = 1; i <= n; i++) {
      if (s[i] != s[i - 1]) {
        if (st == -1) st = i - 1;
      } else if (st != -1) {
        en = i - 1;
        ret = max(ret, gao(st, en));
        st = -1;
      }
    }
    printf("%d\n", ret);
    for (int i = 0; i < n; i++) printf("%d ", ans[i]);
    puts("");
  }
}
