解析:
直接每次x取最小值即可
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=2e5+5;
int n,a[N];
void solve(){
scanf("%lld",&n);
map<int,int>mp;
for(int i=1;i<=n;i++){
scanf("%lld",&a[i]);
}
sort(a+1,a+n+1);
int x=a[n],cnt=0;
while(x!=a[1]){
cnt++;
x=(x+a[1])/2;
}
printf("%lld\n",cnt);
if(cnt<=n)
for(int i=1;i<=cnt;i++) printf("%lld ",a[1]);
printf("\n");
}
signed main(){
int t=1;
scanf("%lld",&t);
while(t--) solve();
return 0;
}