#include <stdio.h>
#include <stdlib.h>
// 모든 요소가 같은 숫자일 경우 1 반환
// 요소 하나만이라도 다르면 0 반환
int is_same(int *arr, int size){
int same = 1;
for(int i = 1; i < size; i++){
if(arr[i] != arr[i-1]){
return 0;
}
}
return 1;
}
// 오른쪽아이에게 사탕 절반 주고 그 과정에서 홀수이면 +1로 바꾸는 함수
void half_sum_adjusted_to_even(int * arr, int size){
// 먼저 자기가 가진 사탕 수 반을 half 배열에 저장
int *half_arr = (int*)malloc(sizeof(int)* size);
for(int i = 0; i < size; i++){
half_arr[i] = arr[i]/2;
}
for(int i = 0; i < size; i++){
// 오른쪽 아이에게 사탕의 절반 주기
if(i == 0){
arr[i] = half_arr[i] + half_arr[size-1];
}
else{
arr[i] = half_arr[i] + half_arr[i-1];
}
// 받은 사탕 수가 홀수면 +1
if(!(arr[i] % 2 == 0)){
arr[i] ++;
}
}
free(half_arr);
}
int main(void){
// 테스트 케이스 입력
int test_case = 0;
scanf("%d", &test_case);
for(int i = 0; i <test_case; i++){
// 아이의 인원 입력
int child_num = 0;
scanf("%d", &child_num);
int *arr = (int*)malloc(sizeof(int)* child_num);
for(int j = 0; j < child_num; j++){
// 각각의 사탕 개수 입력
int candy_num = 0;
scanf("%d", &candy_num);
// 만약 캔디 개수가 홀수면 +1 해서 arr[j]에 저장
if(candy_num % 2) candy_num++;
arr[j] = candy_num;
}
int count = 0;
// 모든 아이가 동일한 개수의 사탕을 가지고 있으면 반복문 종료
while(!is_same(arr, child_num)){
// 오른쪽아이에게 사탕 절반 주고 그 과정에서 홀수이면 +1로 바꾸는 함수
half_sum_adjusted_to_even(arr, child_num);
// 순환 횟수 count;
count ++;
}
// 동적 메모리 풀어주기
free(arr);
// 순환 횟수 출력
printf("%d\n", count);
}
return 0;
}