func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 1e5 + 10;   char a[N], b[N];   int n, T;   int ans[N * 2], ct, rev;   int rt, ch[N][2], fa[N], tg[N], col[N], sz[N];   int get(int x) { return ch[fa[x]][1] == x; }   void pushdown(int x) {     swap(ch[x][0], ch[x][1]), col[ch[x][0]] ^= 1, col[ch[x][1]] ^= 1,         tg[ch[x][0]] ^= 1, tg[ch[x][1]] ^= 1;     tg[x] = 0;   }   int s(int x, int k) {     if (tg[x]) pushdown(x);     if (sz[ch[x][0]] >= k) return s(ch[x][0], k);     if (sz[ch[x][0]] + 1 == k) return x;     return s(ch[x][1], k - sz[ch[x][0]] - 1);   }   char sc(int k) { return col[s(rt, k)] +  0 ; }   void updata(int x) { sz[x] = sz[ch[x][0]] + sz[ch[x][1]] + 1; }   void rotate(int x) {     int k = get(x), y = fa[x];     ch[y][k] = ch[x][k ^ 1];     fa[ch[y][k]] = y;     if (fa[y]) ch[fa[y]][ch[fa[y]][1] == y] = x;     fa[x] = fa[y];     fa[y] = x;     ch[x][k ^ 1] = y;     updata(y);     updata(x);   }   int q[N], cnt;   void splay(int x) {     int y;     q[cnt = 1] = x;     for (int i = x; fa[i]; i = fa[i]) q[++cnt] = fa[i];     for (int i = cnt; i >= 1; i--)       if (tg[q[i]]) pushdown(q[i]);     while (fa[x]) {       y = fa[x];       if (fa[y]) rotate(get(x) == get(y) ? y : x);       rotate(x);     }   }   void work(int k) {     if (k == n) {       col[rt] ^= 1;       tg[rt] ^= 1;       return;     }     int y = s(rt, k + 1);     splay(y);     rt = y;     col[ch[y][0]] ^= 1, tg[ch[y][0]] ^= 1;   }   void clr() {     for (int i = 1; i <= n; i++) fa[i] = tg[i] = sz[i] = ch[i][0] = ch[i][1] = 0;   }   int ins(int l, int r) {     if (l > r) return 0;     int mid = l + r >> 1;     col[mid] = a[mid] -  0 ;     ch[mid][0] = ins(l, mid - 1);     fa[ch[mid][0]] = mid;     ch[mid][1] = ins(mid + 1, r);     fa[ch[mid][1]] = mid;     sz[mid] = sz[ch[mid][0]] + sz[ch[mid][1]] + 1;     return mid;   }   int main() {     scanf( %d , &T);     while (T--) {       ct = rev = 0;       clr();       char c;       int aaa = 1;       scanf( %d%s%s , &n, a + 1, b + 1);       rt = ins(1, n);       for (int i = n; i; i--)         if ((c = sc(i)) != b[i]) {           if (sc(1) != c) ans[++ct] = 1, work(1);           ans[++ct] = i;           work(i);         }       sc(1);       printf( %d , ct);       for (int i = 1; i <= ct; i++) printf(  %d , ans[i]);       puts(  );     }   }   