func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 500005;   struct node {     char s[10];     int len, i, v, num, ty;   } p[N], q[3][N];   int n, vst[N], tot = 0, s[3] = {0};   int f[3][N] = {0};   struct data {     char s[10];     int ty, c[2], len;   } ans[N];   int F(char s[10]) {     int i, ad = 0;     for (i = 0; i < strlen(s); i++) {       if (s[i] <  0  || s[i] >  9 ) return 0;       if (ad == 0 && s[i] ==  0 ) return 0;       ad = ad * 10 + s[i] -  0 ;     }     return ad;   }   int main() {     scanf( %d , &n);     int i, j, k, t, n1 = 0, n2;     for (i = 1; i <= n; i++) {       scanf( %s%d , p[i].s, &p[i].v);       p[i].len = strlen(p[i].s);       p[i].num = F(p[i].s);       n1 += p[i].v;     }     n2 = n - n1;     for (i = 1; i <= n; i++)       if (p[i].num && p[i].num <= n) {         vst[p[i].num] = 1;         if ((p[i].v && p[i].num <= n1) || (!p[i].v && p[i].num > n1))           p[i].ty = 3;         else {           if (p[i].v)             p[i].ty = 2, q[2][++s[2]] = p[i];           else             p[i].ty = 1, q[1][++s[1]] = p[i];         }       } else         p[i].ty = 0, q[0][++s[0]] = p[i];     for (i = 1; i <= n1; i++)       if (!vst[i]) f[1][++f[1][0]] = i;     for (i = n1 + 1; i <= n; i++)       if (!vst[i]) f[2][++f[2][0]] = i;     while (s[1] + s[2]) {       if (f[1][0] + f[2][0]) {         if (f[1][0] && s[2])           k = 1, t = 2;         else           k = 2, t = 1;         ans[++tot].ty = 1;         ans[tot].c[0] = q[t][s[t]].num;         ans[tot].c[1] = f[k][f[k][0]];         f[t][++f[t][0]] = q[t][s[t]].num;         f[k][0]--;         s[t]--;       } else {         if (s[1])           k = 2;         else           k = 1;         ans[++tot].ty = 1;         ans[tot].c[0] = q[k][s[k]].num;         ans[tot].c[1] = 999999;         f[k][++f[k][0]] = q[k][s[k]].num;         q[0][++s[0]] = q[k][s[k]];         q[0][s[0]].ty = q[0][s[0]].num = 0;         q[0][s[0]].len = 6;         for (t = 0; t < 6; t++) q[0][s[0]].s[t] =  9 ;         s[k]--;       }     }     while (s[0]) {       k = 2 - q[0][s[0]].v;       ans[++tot].ty = 2;       ans[tot].len = q[0][s[0]].len;       for (t = 0; t < ans[tot].len; t++) ans[tot].s[t] = q[0][s[0]].s[t];       ans[tot].c[0] = f[k][f[k][0]];       s[0]--;       f[k][0]--;     }     printf( %d n , tot);     for (i = 1; i <= tot; i++) {       if (ans[i].ty == 1)         printf( move %d %d n , ans[i].c[0], ans[i].c[1]);       else {         printf( move  );         for (t = 0; t < ans[i].len; t++) printf( %c , ans[i].s[t]);         printf(  %d n , ans[i].c[0]);       }     }     return 0;   }   