func_code_string: #include <bits/stdc++.h>   using namespace std;   const int inf = 1e9 + 7;   const int maxN = 2e6 + 5;   string s[maxN];   int type[maxN];   int n;   pair<int, int> rang[3];   int sum[maxN];   bool in_range(int x, int type) {     return x >= rang[type].first && x <= rang[type].second;   }   int conv(string s) {     if (s[0] ==  0 ) return inf;     int pow = 1;     int ans = 0;     for (int i = ((int)s.size() - 1); i >= (0); --i) {       if (s[i] <  0  || s[i] >  9 ) {         return inf;       }       ans += (s[i] -  0 ) * pow;       pow *= 10;     }     return ans;   }   vector<string> change[3];   vector<string> empty1, empty0, _0to1_;   bool used[maxN];   void print(vector<string> wek) {     for (auto w : wek) cout << w <<    ;     cout << endl;   }   int main() {     ios_base::sync_with_stdio(0);     cin >> n;     for (int i = (0); i <= ((n)-1); ++i) {       cin >> s[i] >> type[i];       sum[type[i]]++;     }     rang[1] = pair<int, int>(1, sum[1]);     rang[0] = pair<int, int>(sum[1] + 1, n);     for (int i = (0); i <= ((n)-1); ++i) {       int x = conv(s[i]);       bool b = (s[i][0] ==  0 );       if (x <= n && !b) {         if (!in_range(x, type[i])) {           if (type[i] == 0)             _0to1_.push_back(s[i]);           else             change[type[i]].push_back(s[i]);         }         used[x] = true;       } else {         change[type[i]].push_back(s[i]);       }     }     for (int i = (1); i <= (sum[1]); ++i) {       if (!used[i]) {         empty1.push_back(to_string(i));       }     }     for (int i = (sum[1] + 1); i <= (n); ++i) {       if (!used[i]) empty0.push_back(to_string(i));     }     for (int i = (0); i <= (1); ++i) {       vector<string> wek;       for (auto v : change[i])         if (conv(v) <= n) wek.push_back(v);       for (auto v : change[i])         if (conv(v) > n) wek.push_back(v);       change[i] = wek;     }     vector<string> result;     string tmp = to_string(n + 1);     string prev = tmp;     bool pom = false;     for (auto v : change[1]) {       if ((int)empty1.size() != 0) {         result.push_back( move   + v +     + empty1.back());         empty1.pop_back();         int x = conv(v);         if (x <= n && in_range(x, 0)) {           empty0.push_back(v);         }       } else {         if ((int)empty0.size() != 0) {           result.push_back( move   + _0to1_.back() +     + empty0.back());           empty0.pop_back();           result.push_back( move   + v +     + _0to1_.back());           _0to1_.pop_back();           int x = conv(v);           if (x <= n && in_range(x, 0)) {             empty0.push_back(v);           }         } else {           result.push_back( move   + v +     + prev);           result.push_back( move   + _0to1_.back() +     + v);           prev = _0to1_.back();           _0to1_.pop_back();           pom = true;         }       }     }     if (pom) {       result.push_back( move   + tmp +     + prev);     }     for (auto v : change[0]) {       result.push_back( move   + v +     + empty0.back());       empty0.pop_back();     }     cout << (int)result.size() << endl;     for (auto v : result) cout << v << endl;     return 0;   }   