#include <bits/stdc++.h>
#define FOR(i,l,r) for(int i = l ; i <= r ; i ++)
#define FORD(i,r,l) for(int i = r ; i >= l ; i --)
#define REP(i, a ) for(int i = 0 ; i < a ; i ++ )
#define compare(v) sort((v).begin(), (v).end()); (v).erase(unique((v).begin(), (v).end()), (v).end());
#define ll long long
#define el "\n"
#define fi first
#define se second
#define _ROOT_ int main()
#define M 1000000007
#define MAXN 1000001
#define INF (1ll<<30)
#define NAME "file"
using namespace std;
ll n, m, q, ans ;
ll a[MAXN] ;
ll lab[MAXN ] ;
ll res[MAXN ] ;
vector<ll> p[MAXN ] ;
bool active[MAXN ] ;
ll calc(ll a ) {
return a * (a + 1 ) / 2 ;
}
ll find_set(ll a ) {
return lab[a] < 0 ? a : lab[a] = find_set(lab[a] ) ;
}
bool union_set(ll a, ll b ) {
if(active[a] == false ) return false ;
if(active[b] == false ) return false ;
a = find_set(a) ;
b = find_set(b) ;
if(a == b ) return false ;
if(lab[a] > lab[b] ) swap(a, b ) ;
ans -= calc(-lab[a]) ;
ans -= calc(-lab[b]) ;
lab[a] += lab[b] ;
ans += calc(-lab[a]) ;
lab[b] = a ;
return true ;
}
void init() {
cin >> n ;
FOR(i, 1, n ) cin >> a[i] ;
ans = 0 ;
}
void solve() {
n -- ;
FOR(i, 1, n ) a[i] = abs(a[i] - a[i + 1] ) ;
FOR(i, 1, n ) lab[i] = - 1 ;
FOR(i, 1, n ) p[a[i]].push_back(i) ;
FORD(i, n, 1 ) {
for(ll v : p[i]) {
active[v] = true ;
ans ++ ;
union_set(v + 1, v ) ;
union_set(v, v - 1 ) ;
}
res[i] = ans ;
}
FOR(i, 1, n ) cout << res[i] << " " ;
cout << el ;
FOR(i, 1, n ) p[i].clear(), active[i] = false ;
}
_ROOT_ {
// freopen(NAME".inp" , "r" , stdin);
// freopen(NAME".out" , "w", stdout) ;
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int t = 1;
// cin >> t ;
while(t--) {
init();
solve();
}
return (0&0);
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgRk9SKGksbCxyKSBmb3IoaW50IGkgPSBsIDsgaSA8PSByIDsgaSArKykKI2RlZmluZSBGT1JEKGkscixsKSBmb3IoaW50IGkgPSByIDsgaSA+PSBsIDsgaSAtLSkKI2RlZmluZSBSRVAoaSwgYSApIGZvcihpbnQgaSA9IDAgOyBpIDwgYSA7IGkgKysgKQojZGVmaW5lIGNvbXBhcmUodikgc29ydCgodikuYmVnaW4oKSwgKHYpLmVuZCgpKTsgKHYpLmVyYXNlKHVuaXF1ZSgodikuYmVnaW4oKSwgKHYpLmVuZCgpKSwgKHYpLmVuZCgpKTsKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBlbCAiXG4iCiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBfUk9PVF8gaW50IG1haW4oKQojZGVmaW5lIE0gMTAwMDAwMDAwNwojZGVmaW5lIE1BWE4gMTAwMDAwMQojZGVmaW5lIElORiAoMWxsPDwzMCkKI2RlZmluZSBOQU1FICJmaWxlIgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKbGwgbiwgbSwgcSwgYW5zIDsKbGwgYVtNQVhOXSA7CmxsIGxhYltNQVhOIF0gOwpsbCByZXNbTUFYTiBdIDsKdmVjdG9yPGxsPiBwW01BWE4gXSA7CmJvb2wgYWN0aXZlW01BWE4gXSA7CgpsbCBjYWxjKGxsIGEgKSB7CiAgICByZXR1cm4gYSAqIChhICsgMSApIC8gMiA7Cn0KCmxsIGZpbmRfc2V0KGxsIGEgKSB7CiAgICByZXR1cm4gbGFiW2FdIDwgMCA/IGEgOiBsYWJbYV0gPSBmaW5kX3NldChsYWJbYV0gKSA7Cn0KCmJvb2wgdW5pb25fc2V0KGxsIGEsIGxsIGIgKSB7CiAgICBpZihhY3RpdmVbYV0gPT0gZmFsc2UgKSByZXR1cm4gZmFsc2UgOwogICAgaWYoYWN0aXZlW2JdID09IGZhbHNlICkgcmV0dXJuIGZhbHNlIDsKICAgIGEgPSBmaW5kX3NldChhKSA7CiAgICBiID0gZmluZF9zZXQoYikgOwogICAgaWYoYSA9PSBiICkgcmV0dXJuIGZhbHNlIDsKICAgIGlmKGxhYlthXSA+IGxhYltiXSApIHN3YXAoYSwgYiApIDsKICAgIGFucyAtPSBjYWxjKC1sYWJbYV0pIDsKICAgIGFucyAtPSBjYWxjKC1sYWJbYl0pIDsKICAgIGxhYlthXSArPSBsYWJbYl0gOwogICAgYW5zICs9IGNhbGMoLWxhYlthXSkgOwogICAgbGFiW2JdID0gYSA7CiAgICByZXR1cm4gdHJ1ZSA7Cn0KCnZvaWQgaW5pdCgpIHsKICAgIGNpbiA+PiBuIDsKICAgIEZPUihpLCAxLCBuICkgY2luID4+IGFbaV0gOwogICAgYW5zID0gMCA7Cn0KCnZvaWQgc29sdmUoKSB7CiAgICBuIC0tIDsKICAgIEZPUihpLCAxLCBuICkgYVtpXSA9IGFicyhhW2ldIC0gYVtpICsgMV0gKSA7CiAgICBGT1IoaSwgMSwgbiApIGxhYltpXSA9IC0gMSA7CiAgICBGT1IoaSwgMSwgbiApIHBbYVtpXV0ucHVzaF9iYWNrKGkpIDsKICAgIEZPUkQoaSwgbiwgMSApIHsKICAgICAgICBmb3IobGwgdiA6IHBbaV0pIHsKICAgICAgICAgICAgYWN0aXZlW3ZdID0gdHJ1ZSA7CiAgICAgICAgICAgIGFucyArKyA7CiAgICAgICAgICAgIHVuaW9uX3NldCh2ICsgMSwgdiApIDsKICAgICAgICAgICAgdW5pb25fc2V0KHYsIHYgLSAxICkgOwogICAgICAgIH0KICAgICAgICByZXNbaV0gPSBhbnMgOwogICAgfQogICAgRk9SKGksIDEsIG4gKSBjb3V0IDw8IHJlc1tpXSA8PCAiICIgOwogICAgY291dCA8PCBlbCA7CiAgICBGT1IoaSwgMSwgbiApIHBbaV0uY2xlYXIoKSwgYWN0aXZlW2ldID0gZmFsc2UgOwp9CgpfUk9PVF8gewogICAgLy8gZnJlb3BlbihOQU1FIi5pbnAiICwgInIiICwgc3RkaW4pOwogICAgLy8gZnJlb3BlbihOQU1FIi5vdXQiICwgInciLCBzdGRvdXQpIDsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOwogICAgY291dC50aWUoMCk7CiAgICBpbnQgdCA9IDE7CiAgIC8vIGNpbiA+PiB0IDsKICAgIHdoaWxlKHQtLSkgewogICAgICAgIGluaXQoKTsKICAgICAgICBzb2x2ZSgpOwogICAgfQogICAgcmV0dXJuICgwJjApOwp9Cg==