intgcd(int a, int b) { return b? gcd(b, a % b) : a; }
signedmain() { cin >> n; for (int i = 0; i < n; i++) cin >> a[i]; int res = 0; for (int i = 0; i < n; i++) res = gcd(res, a[i]); cout << res * n << endl; return0; }
intread() { int x = 0, f = 1; char ch = getchar(); while (ch < '0' || ch > '9') { if (ch == '-') f = -1; ch = getchar(); } while (ch >= '0' && ch <= '9') { x = x * 10 + ch - '0'; ch = getchar(); } return x * f; }
voidprint(int x) { if (x < 0) { putchar('-'); x = -x; } if (x > 9) print(x / 10); putchar(x % 10 + '0'); }
boolcheck1(int x) { if (x == 1) returntrue; int sum = 1; for (int i = 1; i <= k; i++) { sum *= x; if (sum > n) returnfalse; } returntrue; }
boolcheck2(int x) { if (x == 1) return x >= n; int sum = 1; for (int i = 1; i <= k; i++) { sum *= x; if (sum >= n) returntrue; } returnfalse; }
signedmain() { T = read(); while (T--) { n = read(), k = read(); int l = 1, r = 1e18; while (l < r) { int mid = l + r + 1 >> 1; if (!check1(mid)) r = mid - 1; else l = mid; } res = l; l = 1, r = 1e18; while (l < r) { int mid = l + r >> 1; if (!check2(mid)) l = mid + 1; else r = mid; } int p1 = 1, p2 = 1; if (res > 1) { for (int i = 1; i <= k; i++) p1 *= res; } for (int i = 1; i <= k; i++) { p2 *= l; if (p2 - n > n - p1) break; } if (n - p1 > p2 - n) res = l; print(res); cout << endl; }
#define int long long #define x first #define y second
usingnamespace std;
constint N = 100010;
int n; int a[N]; int g[N]; pair<int, int> f[N];
intcalc(int x) { int cnt = 0; for (int i = 0; i <= 31; i++) { if (!(x >> i & 1)) continue; x -= ((int)1 << i); if ((x >> i + 1) & 1) x += ((int)1 << cnt++); else { x += ((int)1 << i + 1); break; } }
return x; }
signedmain() { cin >> n; for (int i = 0; i < n; i++) cin >> a[i];
sort(a, a + n);
map<int, int> p; for (int i = 0; i < n; i++) { p[a[i]] = i; g[i] = calc(a[i]); }
for (int i = 0; i < n; i++) f[i].y = -1;
int res = 0, idx = 0; for (int i = 0; i < n; i++) { if (!p.count(g[i])) continue; int x = p[g[i]]; if (f[x].x < f[i].x + 1) { f[x] = {f[i].x + 1, i}; if (res < f[x].x) { res = f[x].x; idx = x; } } }
vector<int> s; while (~idx) { s.push_back(a[idx]); idx = f[idx].y; }
cout << s.size() << endl; for (int i = s.size() - 1; i >= 0; i--) cout << s[i] << ' '; cout << endl;