#include <bits/stdc++.h>
using namespace std;
const int maxn = 7e4 + 17;
const string rndS = "0arpa1";
int n, e;
set<string> sampleNum, testNum, sampleFree, testFree;
set<string> s[2][2];
int main() {
  ios::sync_with_stdio(0), cin.tie(0);
  cin >> n;
  for (int i = 0; i < n; i++) {
    string str;
    bool sample;
    cin >> str >> sample;
    e += sample;
    s[!sample][0].insert(str);
  }
  for (int i = 1; i <= n; i++)
    (i <= e ? sampleNum : testNum).insert(to_string(i));
  sampleFree = sampleNum;
  testFree = testNum;
  for (auto it = s[0][0].begin(); it != s[0][0].end();)
    if (sampleFree.count(*it)) {
      sampleFree.erase(*it);
      it = s[0][0].erase(it);
    } else if (testFree.count(*it)) {
      testFree.erase(*it);
      s[0][1].insert(*it);
      it = s[0][0].erase(it);
    } else
      it++;
  for (auto it = s[1][0].begin(); it != s[1][0].end();)
    if (testFree.count(*it)) {
      testFree.erase(*it);
      it = s[1][0].erase(it);
    } else if (sampleFree.count(*it)) {
      sampleFree.erase(*it);
      s[1][1].insert(*it);
      it = s[1][0].erase(it);
    } else
      it++;
  vector<string> ans;
  if (testFree.empty() && sampleFree.empty()) {
    if (s[0][0].empty() && s[0][1].empty() && s[1][0].empty() &&
        s[1][1].empty())
      return cout << "0\n", 0;
    string bad = *s[0][1].begin();
    s[0][1].erase(bad);
    testFree.insert(bad);
    s[0][0].insert(rndS);
    ans.push_back("move " + bad + ' ' + rndS);
  }
  while (!s[0][1].empty() || !s[1][1].empty()) {
    if (!s[0][1].empty() && !sampleFree.empty()) {
      string from = *s[0][1].begin(), to = *sampleFree.begin();
      sampleFree.erase(to);
      testFree.insert(from);
      s[0][1].erase(from);
      ans.push_back("move " + from + ' ' + to);
    }
    if (!s[1][1].empty() && !testFree.empty()) {
      string from = *s[1][1].begin(), to = *testFree.begin();
      testFree.erase(to);
      sampleFree.insert(from);
      s[1][1].erase(from);
      ans.push_back("move " + from + ' ' + to);
    }
  }
  assert(s[0][0].size() == sampleFree.size() &&
         s[1][0].size() == testFree.size());
  for (auto it = s[0][0].begin(), it2 = sampleFree.begin(); it != s[0][0].end();
       it++, it2++)
    ans.push_back("move " + *it + ' ' + *it2);
  for (auto it = s[1][0].begin(), it2 = testFree.begin(); it != s[1][0].end();
       it++, it2++)
    ans.push_back("move " + *it + ' ' + *it2);
  cout << ans.size() << '\n';
  for (auto s : ans) cout << s << '\n';
}
