#include <bits/stdc++.h>
using namespace std;
string itostr(int a) {
  string res = "";
  while (a > 0) {
    res += char('0' + a % 10);
    a /= 10;
  }
  reverse(res.begin(), res.end());
  return res;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int n;
  cin >> n;
  vector<string> a, b;
  int m = 0;
  vector<string> vs;
  for (int i = 0; i < n; i++) {
    string s;
    int x;
    cin >> s >> x;
    m += x;
    vs.push_back(s);
    if (x == 1) {
      a.push_back(s);
    } else {
      b.push_back(s);
    }
  }
  stringstream sout;
  vector<int> f(n + 1);
  vector<int> w(n + 1);
  vector<int> ta, tb, za, zb, ia(a.size()), ib(b.size());
  for (int i = 0; i < a.size(); i++) {
    int isg = 1;
    int tt = 0;
    for (int j = 0; j < a[i].length(); j++) {
      if (a[i][j] < '0' || a[i][j] > '9') isg = 0;
      tt *= 10;
      tt += a[i][j] - '0';
    }
    if (a[i][0] == '0') isg = 0;
    if (isg) {
      ia[i] = tt;
      if (tt <= m) {
        f[tt] = 1;
      } else if (tt <= n) {
        f[tt] = 2;
        za.push_back(i);
        w[tt] = i;
      } else {
        ta.push_back(i);
      }
    } else {
      ta.push_back(i);
    }
  }
  for (int i = 0; i < b.size(); i++) {
    int isg = 1;
    int tt = 0;
    for (int j = 0; j < b[i].length(); j++) {
      if (b[i][j] < '0' || b[i][j] > '9') isg = 0;
      tt *= 10;
      tt += b[i][j] - '0';
    }
    if (b[i][0] == '0') isg = 0;
    if (isg) {
      ib[i] = tt;
      if (tt <= m) {
        f[tt] = 2;
        zb.push_back(i);
        w[tt] = i;
      } else if (tt <= n) {
        f[tt] = 1;
      } else {
        tb.push_back(i);
      }
    } else {
      tb.push_back(i);
    }
  }
  vector<int> pa, pb;
  for (int i = 1; i <= m; i++) {
    if (f[i] == 0) pa.push_back(i);
  }
  for (int i = m + 1; i <= n; i++) {
    if (f[i] == 0) pb.push_back(i);
  }
  vector<pair<string, string> > zapr;
  while (1) {
    bool tact = 0;
    if (!pa.empty() && !za.empty()) {
      tact = 1;
      zapr.push_back({a[za.back()], itostr(pa.back())});
      pa.pop_back();
      pb.push_back(ia[za.back()]);
      za.pop_back();
    }
    if (!pb.empty() && !zb.empty()) {
      tact = 1;
      zapr.push_back({b[zb.back()], itostr(pb.back())});
      pb.pop_back();
      pa.push_back(ib[zb.back()]);
      zb.pop_back();
    }
    if (!tact) break;
  }
  if (!za.empty()) {
    zapr.push_back({a[za.back()], "sk12je"});
    a[za.back()] = "sk12je";
    ta.push_back(za.back());
    pb.push_back(ia[za.back()]);
    za.pop_back();
  }
  while (1) {
    bool tact = 0;
    if (!pa.empty() && !za.empty()) {
      tact = 1;
      zapr.push_back({a[za.back()], itostr(pa.back())});
      pa.pop_back();
      pb.push_back(ia[za.back()]);
      za.pop_back();
    }
    if (!pb.empty() && !zb.empty()) {
      tact = 1;
      zapr.push_back({b[zb.back()], itostr(pb.back())});
      pb.pop_back();
      pa.push_back(ib[zb.back()]);
      zb.pop_back();
    }
    if (!tact) break;
  }
  while (1) {
    bool tact = 0;
    if (!pa.empty() && !ta.empty()) {
      tact = 1;
      zapr.push_back({a[ta.back()], itostr(pa.back())});
      pa.pop_back();
      ta.pop_back();
    }
    if (!pb.empty() && !tb.empty()) {
      tact = 1;
      zapr.push_back({b[tb.back()], itostr(pb.back())});
      pb.pop_back();
      tb.pop_back();
    }
    if (!tact) break;
  }
  cout << zapr.size() << endl;
  for (int i = 0; i < zapr.size(); i++) {
    cout << "move " << zapr[i].first << " " << zapr[i].second << "\n";
  }
}
