#include <bits/stdc++.h>
using namespace std;
template <typename T>
using V = vector<T>;
int N, e = 0;
vector<string> norm_to_ex, ex_to_norm, weird_to_ex, weird_to_norm;
unordered_set<string> ex, norms;
vector<pair<string, string>> movs;
string tmp;
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cin >> N;
  vector<pair<string, int>> files;
  unordered_set<string> used;
  for (int(i) = 0; (i) < (N); ++(i)) {
    int type;
    string name;
    cin >> name >> type;
    if (type == 1) {
      ++e;
    }
    files.emplace_back(name, type);
    used.insert(name);
  }
  for (int(i) = 0; (i) < (1e5 + 10); ++(i)) {
    tmp = to_string(i);
    if (!used.count(tmp)) break;
  }
  for (int i = 1; i <= e; ++i) {
    ex.insert(to_string(i));
  }
  for (int i = e + 1; i <= N; ++i) {
    norms.insert(to_string(i));
  }
  for (const auto &f : files) {
    if (ex.count(f.first) && f.second == 1) {
      ex.erase(f.first);
    } else if (ex.count(f.first) && f.second == 0) {
      ex.erase(f.first);
      ex_to_norm.push_back(f.first);
    } else if (norms.count(f.first) && f.second == 1) {
      norms.erase(f.first);
      norm_to_ex.push_back(f.first);
    } else if (norms.count(f.first) && f.second == 0) {
      norms.erase(f.first);
    } else if (f.second == 1) {
      weird_to_ex.push_back(f.first);
    } else {
      weird_to_norm.push_back(f.first);
    }
  }
  while (norm_to_ex.size() || ex_to_norm.size()) {
    int prevsz = movs.size();
    while (ex.size() && norm_to_ex.size()) {
      movs.emplace_back(norm_to_ex.back(), *ex.begin());
      ex.erase(ex.begin());
      norms.insert(norm_to_ex.back());
      norm_to_ex.pop_back();
    }
    while (norms.size() && ex_to_norm.size()) {
      movs.emplace_back(ex_to_norm.back(), *norms.begin());
      norms.erase(norms.begin());
      ex.insert(ex_to_norm.back());
      ex_to_norm.pop_back();
    }
    if (prevsz == movs.size() && ex_to_norm.size() && norm_to_ex.size()) {
      movs.emplace_back(ex_to_norm.back(), tmp);
      ex.insert(ex_to_norm.back());
      weird_to_norm.push_back(tmp);
      ex_to_norm.pop_back();
    }
  }
  while (ex.size()) {
    movs.emplace_back(weird_to_ex.back(), *ex.begin());
    ex.erase(ex.begin());
    weird_to_ex.pop_back();
  }
  while (norms.size()) {
    movs.emplace_back(weird_to_norm.back(), *norms.begin());
    norms.erase(norms.begin());
    weird_to_norm.pop_back();
  }
  cout << movs.size() << "\n";
  for (const auto &mov : movs) {
    cout << "move " << mov.first << " " << mov.second << "\n";
  }
}
