#include <bits/stdc++.h>   using namespace std;   long long readi() {     long long input = 0;     char c =    ;     while (c <  - ) {       c = getchar();     }     bool negative = false;     if (c ==  - ) {       negative = true;       c = getchar();     }     while (c >=  0 ) {       input = 10 * input + (c -  0 );       c = getchar();     }     if (negative) {       input = -input;     }     return input;   }   void printi(long long output) {     if (output == 0) {       putchar( 0 );       return;     }     if (output < 0) {       putchar( - );       output = -output;     }     int aout[20];     int ilen = 0;     while (output) {       aout[ilen] = ((output % 10));       output /= 10;       ilen++;     }     for (int i = ilen - 1; i >= 0; i--) {       putchar(aout[i] +  0 );     }     return;   }   string reads() {     string input =   ;     char c =    ;     while (c <=    ) {       c = getchar();     }     while (c >    ) {       input += c;       c = getchar();     }     return input;   }   void prints(string output) {     for (int i = 0; i < output.length(); i++) {       putchar(output[i]);     }     return;   }   long long getrand() {     long long rand1 = (rand() % 536870912);     long long rand2 = (rand() % 536870912);     return (rand1 * 536870912ll + rand2);   }   int N, E;   vector<string> pretest, systest;   vector<int> badp, bads;   vector<pair<string, int> > ans;   int nump[1000010], nums[1000010];   bool used[1000010];   vector<int> vp, vs, num;   int32_t main() {     srand(time(NULL));     cout << fixed << setprecision(10);     cerr << fixed << setprecision(10);     ios_base::sync_with_stdio(false);     if (fopen( cf860c.in ,  r )) {       freopen( cf860c.in ,  r , stdin);     }     cin >> N;     for (int i = 0; i < N; i++) {       string s;       cin >> s;       bool idx;       cin >> idx;       if (idx) {         pretest.push_back(s);       } else {         systest.push_back(s);       }     }     E = pretest.size();     for (int i = 0; i < pretest.size(); i++) {       bool isnum = true;       for (int j = 0; j < pretest[i].length(); j++) {         if (!isdigit(pretest[i][j])) {           isnum = false;         }       }       if (pretest[i][0] ==  0 ) {         isnum = false;       }       if (isnum) {         nump[i] = stoi(pretest[i]);         used[nump[i]] = true;         if (E + 1 <= nump[i] && nump[i] <= N) {           badp.push_back(i);         }       }     }     for (int i = 0; i < systest.size(); i++) {       bool isnum = true;       for (int j = 0; j < systest[i].length(); j++) {         if (!isdigit(systest[i][j])) {           isnum = false;         }       }       if (systest[i][0] ==  0 ) {         isnum = false;       }       if (isnum) {         nums[i] = stoi(systest[i]);         used[nums[i]] = true;         if (1 <= nums[i] && nums[i] <= E) {           bads.push_back(i);         }       }     }     for (int i = 100000; i < 1000000; i++) {       if (!used[i]) {         num.push_back(i);       }     }     for (int i = 1; i <= E; i++) {       if (!used[i]) {         vp.push_back(i);       }     }     for (int i = E + 1; i <= N; i++) {       if (!used[i]) {         vs.push_back(i);       }     }     while (!badp.empty() || !bads.empty()) {       if (!badp.empty() && !vp.empty()) {         int idx = badp.back();         badp.pop_back();         vs.push_back(nump[idx]);         ans.push_back(make_pair(pretest[idx], vp.back()));         pretest[idx] = to_string(vp.back());         nump[idx] = vp.back();         vp.pop_back();       } else if (!bads.empty() && !vs.empty()) {         int idx = bads.back();         bads.pop_back();         vp.push_back(nums[idx]);         ans.push_back(make_pair(systest[idx], vs.back()));         systest[idx] = to_string(vs.back());         nums[idx] = vs.back();         vs.pop_back();       } else if (!badp.empty()) {         int idx = badp.back();         badp.pop_back();         vs.push_back(nump[idx]);         ans.push_back(make_pair(pretest[idx], num.back()));         pretest[idx] = to_string(num.back());         nump[idx] = num.back();         num.pop_back();       } else if (!bads.empty()) {         int idx = bads.back();         bads.pop_back();         vp.push_back(nums[idx]);         ans.push_back(make_pair(systest[idx], num.back()));         systest[idx] = to_string(num.back());         nums[idx] = num.back();         num.pop_back();       }     }     for (int i = 0; i < pretest.size(); i++) {       if (1 <= nump[i] && nump[i] <= E) {         continue;       }       ans.push_back(make_pair(pretest[i], vp.back()));       pretest[i] = vp.back();       vp.pop_back();     }     for (int i = 0; i < systest.size(); i++) {       if (E + 1 <= nums[i] && nums[i] <= N) {         continue;       }       ans.push_back(make_pair(systest[i], vs.back()));       systest[i] = vs.back();       vs.pop_back();     }     cout << ans.size() <<   n ;     for (int i = 0; i < ans.size(); i++) {       cout <<  move   << ans[i].first <<     << ans[i].second <<   n ;     }     return 0;   }