#include <stdio.h>
#include <stdlib.h>
// 执行一轮分发
void distribute(int *a, int n)
{
int i;
int last = a[n - 1]; // 开始前,最后一个人手中的数量
// 第1~倒数第2个人
for (i = 0; i < n - 1; i++)
{
a[i] /= 2;
if (i == 0)
a[n - 1] += a[i]; // 第一个人分一半给最后一个人
else
a[i - 1] += a[i]; // 其他人分一半给前一个人
}
// 最后一个人需要特殊处理
// 他只拿出最开始的一半给倒数第二个人
// 而不是现在手中的一半(现在第一个人已经给了他一部分,不能把这部分算进去)
last /= 2;
a[n - 1] -= last;
a[n - 2] += last;
}
int resupply(int *arr, int n)
{
int num = 0;
int i;
for (i = 0; i < n; i++)
{
if (arr[i] % 2 == 1)
{
arr[i]++;
num++;
}
}
return num;
}
int equal(int *arr, int n)
{
int i;
for (i = 1; i < n; i++)
{
if (arr[i] != arr[0])
return 0;
}
return 1;
}
int main(void)
{
int i, n, *arr;
int count = 0;
scanf("%d", &n);
arr = (int *)malloc(n * sizeof(int));
for (i = 0; i < n; i++)
scanf("%d", arr + i);
do
{
distribute(arr, n);
count += resupply(arr, n);
} while (!equal(arr, n));
free(arr);
printf("%d\n", count);
return 0;
}