#include <bits/stdc++.h>   using namespace std;   const int maxn = 200009;   const long long MOD = 119 << 23 | 1;   class {    public:     bool g[1 << 22];     int a[1 << 22];     int N, M, n, m;     void solve() {       int _;       cin >> _;       while (_--) {         cin >> n >> m;         N = (1 << n) - 1;         M = (1 << m) - 1;         for (int i = 1; i <= N; ++i) cin >> a[i];         for (int i = M + 1; i <= N; ++i) g[i] = 1;         for (int i = M; i; --i) {           if (a[i << 1] < a[i << 1 | 1]) {             g[i] = g[i << 1 | 1];           } else {             g[i] = g[i << 1];           }         }         vector<int> ans;         int rt = 1;         for (int i = 0; i < N - M; ++i) {           while (!g[rt]) rt++;           ans.push_back(rt);           down(rt);         }         long long sum = 0;         for (int i = 1; i <= M; ++i) sum += a[i];         cout << sum <<   n ;         for (int i : ans) cout << i <<    ;         cout <<   n ;         for (int i = 1; i <= N; ++i) g[i] = a[i] = 0;       }     }     void down(int rt) {       int lson = rt << 1, rson = rt << 1 | 1;       if (a[lson] == 0 && a[rson] == 0) {         a[rt] = 0;         g[rt] = 0;         return;       }       if (a[lson] > a[rson]) {         a[rt] = a[lson];         down(lson);       } else {         a[rt] = a[rson];         down(rson);       }       if (rt <= M) {         if (a[lson] > a[rson])           g[rt] = g[lson];         else           g[rt] = g[rson];       }     }   } NSPACE;   int main() {     ;     ios_base::sync_with_stdio(false);     cout.tie(0);     cin.tie(0);     NSPACE.solve();   }   