#include <bits/stdc++.h>
using namespace std;
int n;
vector<pair<string, int>> v;
unordered_set<string> ex_nums, test_nums;
vector<pair<string, string>> res;
vector<bool> u;
inline string get_fake() {
  string res = "";
  for (int i = 0; i < 6; ++i) {
    res += (rand() % 26) + 'a';
  }
  return res;
}
string fake;
int main() {
  srand(100500);
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  fake = get_fake();
  cin >> n;
  v.resize(n);
  for (int i = 0; i < n; ++i) {
    cin >> v[i].first >> v[i].second;
  }
START:
  int cnt_ex = 0;
  for (int i = 0; i < n; ++i) {
    cnt_ex += v[i].second;
  }
  for (int i = 1; i <= cnt_ex; ++i) {
    ex_nums.insert(to_string(i));
  }
  for (int i = cnt_ex + 1; i <= n; ++i) {
    test_nums.insert(to_string(i));
  }
  u.resize(n);
  for (int i = 0; i < n; ++i) {
    if (v[i].second) {
      if (ex_nums.count(v[i].first)) {
        ex_nums.erase(v[i].first);
        u[i] = true;
      }
    } else {
      if (test_nums.count(v[i].first)) {
        test_nums.erase(v[i].first);
        u[i] = true;
      }
    }
  }
  unordered_set<string> ex, ex_test;
  for (int i = 0; i < n; ++i) {
    if (v[i].second && !u[i]) {
      if (test_nums.count(v[i].first)) {
        ex_test.insert(v[i].first);
      } else {
        ex.insert(v[i].first);
      }
    }
  }
  unordered_set<string> test, test_ex;
  for (int i = 0; i < n; ++i) {
    if (!v[i].second && !u[i]) {
      if (ex_nums.count(v[i].first)) {
        test_ex.insert(v[i].first);
      } else {
        test.insert(v[i].first);
      }
    }
  }
  string exnum = "";
  for (const string& x : ex_nums) {
    if (!test_ex.count(x)) {
      exnum = x;
      break;
    }
  }
  string testnum = "";
  for (const string& x : test_nums) {
    if (!ex_test.count(x)) {
      testnum = x;
      break;
    }
  }
  if (exnum == "" && testnum == "") {
    if (!test_ex.empty()) {
      res.push_back({*test_ex.begin(), fake});
      exnum = *test_ex.begin();
      test_ex.erase(test_ex.begin());
      test.insert(fake);
    } else if (!ex_test.empty()) {
      res.push_back({*ex_test.begin(), fake});
      testnum = *ex_test.begin();
      ex_test.erase(ex_test.begin());
      ex.insert(fake);
    }
  }
  if (exnum != "" || testnum != "") {
    int step = 0;
    if (testnum != "") {
      exnum = testnum;
      step = 1;
    }
    while (true) {
      if (!step) {
        if (ex_test.empty()) {
          break;
        } else {
          ex_nums.erase(exnum);
          res.push_back({*ex_test.begin(), exnum});
          exnum = *ex_test.begin();
          ex_test.erase(ex_test.begin());
          step ^= 1;
        }
      } else {
        if (test_ex.empty()) {
          break;
        } else {
          test_nums.erase(exnum);
          res.push_back({*test_ex.begin(), exnum});
          exnum = *test_ex.begin();
          test_ex.erase(test_ex.begin());
          step ^= 1;
        }
      }
    }
    if (!step) {
      while (!test_ex.empty()) {
        res.push_back({*test_ex.begin(), *test_nums.begin()});
        test_ex.erase(test_ex.begin());
        test_nums.erase(test_nums.begin());
      }
      while (!test.empty()) {
        res.push_back({*test.begin(), *test_nums.begin()});
        test.erase(test.begin());
        test_nums.erase(test_nums.begin());
      }
      while (!ex_test.empty()) {
        res.push_back({*ex_test.begin(), *ex_nums.begin()});
        ex_test.erase(ex_test.begin());
        ex_nums.erase(ex_nums.begin());
      }
      while (!ex.empty()) {
        res.push_back({*ex.begin(), *ex_nums.begin()});
        ex.erase(ex.begin());
        ex_nums.erase(ex_nums.begin());
      }
    } else {
      while (!ex_test.empty()) {
        res.push_back({*ex_test.begin(), *ex_nums.begin()});
        ex_test.erase(ex_test.begin());
        ex_nums.erase(ex_nums.begin());
      }
      while (!ex.empty()) {
        res.push_back({*ex.begin(), *ex_nums.begin()});
        ex.erase(ex.begin());
        ex_nums.erase(ex_nums.begin());
      }
      while (!test_ex.empty()) {
        res.push_back({*test_ex.begin(), *test_nums.begin()});
        test_ex.erase(test_ex.begin());
        test_nums.erase(test_nums.begin());
      }
      while (!test.empty()) {
        res.push_back({*test.begin(), *test_nums.begin()});
        test.erase(test.begin());
        test_nums.erase(test_nums.begin());
      }
    }
  } else {
  }
  cout << res.size() << "\n";
  for (int i = 0; i < res.size(); ++i) {
    cout << "move " << res[i].first << " " << res[i].second << "\n";
  }
}
