package work;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class ACardNumber {
static int data[];
static int T, minsum;
public static void main(String[] args) throws FileNotFoundException {
/* Scanner sc=new Scanner(System.in); */
Scanner sc = new Scanner(new File("src/cardnumber"));
T = sc.nextInt();
for (int t = 0; t < T; t++) {
int n = sc.nextInt();
data = new int[25];
minsum = 0;
for (int i = 0; i < n; i++) {
data[sc.nextInt()]++;
}
fnc();
for (int i = 1; i < 25; i++) {
minsum += data[i] * i;
}
System.out.println(minsum);
for (int i = 1; i < 25; i++) {
System.out.print(data[i] + " ");
}
System.out.println();
}
}
private static void fnc() {
for (int i = 24; i >= 1; i--) {
if (i % 2 != 0) {
continue;
} else {
if (data[i] > 0 && data[i / 2] > 1) {
if(data[i] >= data[i / 2] / 2){
data[i]=data[i] - data[i / 2] / 2;
data[i/2]=0;
}
else{
data[i]=0;
data[i/2]=data[i/2]-data[i]*2;
}
}
}
}
}
}
、、input
1
8
2 4 7 3 3 6 2 8
、、output
15
0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0