#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
const int INF = 1e9;
const ll LINF = 1e18;
const int N = 3e5 + 5;
int n;
int a[N], b[N];
bool check(int mid) {
b[1] = a[1] - mid;
int prv = b[1];
for (int i = 2; i <= n; i++) {
b[i] = max(prv + 1, a[i] - mid);
if (b[i] > a[i] + mid) return false;
prv = b[i];
}
return true;
}
int main() {
ios::sync_with_stdio(0); cin.tie(0);
cin >> n;
for (int i = 1; i <= n; i++) cin >> a[i];
int l = 0, r = 1e9, ans = -1;
while (l <= r) {
int mid = (l + r) >> 1;
if (check(mid)) {
ans = mid;
r = mid - 1;
}
else {
l = mid + 1;
}
}
check(ans);
cout << ans << '\n';
for (int i = 1; i <= n; i++) cout << b[i] << ' '; cout << '\n';
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAp1c2luZyBuYW1lc3BhY2Ugc3RkOyAgCgp0eXBlZGVmIGxvbmcgbG9uZyBsbDsgIAp0eXBlZGVmIHBhaXI8aW50LCBpbnQ+IGlpOyAgCgpjb25zdCBpbnQgSU5GID0gMWU5OyAgCmNvbnN0IGxsIExJTkYgPSAxZTE4OyAgCgpjb25zdCBpbnQgTiA9IDNlNSArIDU7ICAgCgppbnQgbjsgICAKaW50IGFbTl0sIGJbTl07ICAKCmJvb2wgY2hlY2soaW50IG1pZCkgewoJYlsxXSA9IGFbMV0gLSBtaWQ7ICAKCWludCBwcnYgPSBiWzFdOyAKCWZvciAoaW50IGkgPSAyOyBpIDw9IG47IGkrKykgewoJCWJbaV0gPSBtYXgocHJ2ICsgMSwgYVtpXSAtIG1pZCk7CgkJaWYgKGJbaV0gPiBhW2ldICsgbWlkKSByZXR1cm4gZmFsc2U7ICAKCQlwcnYgPSBiW2ldOyAgCgl9CglyZXR1cm4gdHJ1ZTsgCn0KCmludCBtYWluKCkgewoJaW9zOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7ICAJCgljaW4gPj4gbjsgCglmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIGNpbiA+PiBhW2ldOyAKCglpbnQgbCA9IDAsIHIgPSAxZTksIGFucyA9IC0xOyAgCgl3aGlsZSAobCA8PSByKSB7CgkJaW50IG1pZCA9IChsICsgcikgPj4gMTsgIAoKCQlpZiAoY2hlY2sobWlkKSkgewoJCQlhbnMgPSBtaWQ7ICAgIAoJCQlyID0gbWlkIC0gMTsgIAoJCX0KCQllbHNlIHsKCQkJbCA9IG1pZCArIDE7ICAKCQl9Cgl9CgoJY2hlY2soYW5zKTsgCgoJY291dCA8PCBhbnMgPDwgJ1xuJzsgIAoJZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSBjb3V0IDw8IGJbaV0gPDwgJyAnOyBjb3V0IDw8ICdcbic7IAp9