#include <bits/stdc++.h>
const int Mod = (int)1e9 + 7;
const int MX = 1073741822;
const long long MXLL = 9223372036854775807;
const int Sz = 1110111;
using namespace std;
inline void Read_rap() {
  ios_base ::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
}
inline void randomizer3000() {
  unsigned int seed;
  asm("rdtsc" : "=A"(seed));
  srand(seed);
}
int n;
vector<int> a[2];
vector<string> last[2];
set<int> fr;
int cnt[2];
vector<string> ans;
int number(string &s) {
  for (char c : s)
    if (!isdigit(c)) return -1;
  if (s[0] == '0') return -1;
  int x = atoi(s.c_str());
  if (x <= n)
    return x;
  else
    return -1;
}
int main() {
  Read_rap();
  cin >> n;
  for (int i = 1; i <= n; i++) fr.insert(i);
  for (int i = 1; i <= n; i++) {
    static string x;
    int tp;
    cin >> x >> tp;
    tp ^= 1;
    cnt[tp]++;
    int num = number(x);
    if (~num) {
      a[tp].push_back(num);
      fr.erase(num);
    } else
      last[tp].push_back(x);
  }
  int e = cnt[0];
  sort(a[0].begin(), a[0].end(), [](int a, int b) { return a > b; });
  sort(a[1].begin(), a[1].end());
  while ((int)(a[0].size()) && a[0].back() <= e) a[0].pop_back();
  while ((int)(a[1].size()) && a[1].back() > e) a[1].pop_back();
  vector<int> cur;
  int to_change = (int)(last[0].size()) + (int)(last[1].size()) +
                  (int)(a[0].size()) + (int)(a[1].size());
  while (to_change) {
    string o;
    int x;
    if ((int)(fr.size())) {
      to_change--;
      x = *fr.begin();
      int y = *fr.rbegin();
      if ((int)(a[0].size()) && x <= e) {
        fr.erase(x);
        fr.insert(a[0].back());
        o = to_string(a[0].back());
        a[0].pop_back();
      } else if ((int)(a[1].size()) && y > e) {
        x = y;
        fr.erase(x);
        fr.insert(a[1].back());
        o = to_string(a[1].back());
        a[1].pop_back();
      } else if ((int)(last[0].size()) && x <= e) {
        fr.erase(x);
        o = last[0].back();
        last[0].pop_back();
      } else if ((int)(last[1].size()) && y > e) {
        x = y;
        fr.erase(x);
        o = last[1].back();
        last[1].pop_back();
      } else
        assert(0);
    } else {
      x = n + 1;
      if ((int)(a[0].size())) {
        o = to_string(a[0].back());
        fr.insert(a[0].back());
        last[0].push_back(to_string(n + 1));
        a[0].pop_back();
      } else {
        assert((int)(a[1].size()));
        o = to_string(a[1].back());
        fr.insert(a[1].back());
        last[1].push_back(to_string(n + 1));
        a[1].pop_back();
      }
    }
    ans.push_back("move " + o + " " + to_string(x));
  }
  cout << (int)(ans.size()) << endl;
  for (auto x : ans) cout << x << endl;
  return 0;
}
