function c = solver(a)
na = length(a); c = [ones(na-1,1)];
ii = find(a);
if isempty(ii), return; end
kk = 1:na;
jj = [ kk( a(1:end-1) ~= a(2:end) ), na ];
if jj(1) ~= 1, jj = [ 1, jj ]; end
m = length(jj); kk = 1:2:m-1;
grSt = jj( kk ); grEnd = jj( kk+1 );
grLen = floor( (grEnd+grSt)/2 );
n = floor(m/2);
for k = 1:n
i1 = grLen(k); i2 = i1 + 1;
c(i1) = i * c(i1) * sign(c(i1));
c(i2:end) = -c(i2:end);
end