#include <bits/stdc++.h>
using namespace std;
const int N = 500005;
struct node {
  char s[10];
  int len, i, v, num, ty;
} p[N], q[3][N];
int n, vst[N], tot = 0, s[3] = {0};
int f[3][N] = {0};
struct data {
  char s[10];
  int ty, c[2], len;
} ans[N];
int F(char s[10]) {
  int i, ad = 0;
  for (i = 0; i < strlen(s); i++) {
    if (s[i] < '0' || s[i] > '9') return 0;
    if (ad == 0 && s[i] == '0') return 0;
    ad = ad * 10 + s[i] - '0';
  }
  return ad;
}
int main() {
  scanf("%d", &n);
  int i, j, k, t, n1 = 0, n2;
  for (i = 1; i <= n; i++) {
    scanf("%s%d", p[i].s, &p[i].v);
    p[i].len = strlen(p[i].s);
    p[i].num = F(p[i].s);
    n1 += p[i].v;
  }
  n2 = n - n1;
  for (i = 1; i <= n; i++)
    if (p[i].num && p[i].num <= n) {
      vst[p[i].num] = 1;
      if ((p[i].v && p[i].num <= n1) || (!p[i].v && p[i].num > n1))
        p[i].ty = 3;
      else {
        if (p[i].v)
          p[i].ty = 2, q[2][++s[2]] = p[i];
        else
          p[i].ty = 1, q[1][++s[1]] = p[i];
      }
    } else
      p[i].ty = 0, q[0][++s[0]] = p[i];
  for (i = 1; i <= n1; i++)
    if (!vst[i]) f[1][++f[1][0]] = i;
  for (i = n1 + 1; i <= n; i++)
    if (!vst[i]) f[2][++f[2][0]] = i;
  while (s[1] + s[2]) {
    if (f[1][0] + f[2][0]) {
      if (f[1][0] && s[2])
        k = 1, t = 2;
      else
        k = 2, t = 1;
      ans[++tot].ty = 1;
      ans[tot].c[0] = q[t][s[t]].num;
      ans[tot].c[1] = f[k][f[k][0]];
      f[t][++f[t][0]] = q[t][s[t]].num;
      f[k][0]--;
      s[t]--;
    } else {
      if (s[1])
        k = 2;
      else
        k = 1;
      ans[++tot].ty = 1;
      ans[tot].c[0] = q[k][s[k]].num;
      ans[tot].c[1] = 999999;
      f[k][++f[k][0]] = q[k][s[k]].num;
      q[0][++s[0]] = q[k][s[k]];
      q[0][s[0]].ty = q[0][s[0]].num = 0;
      q[0][s[0]].len = 6;
      for (t = 0; t < 6; t++) q[0][s[0]].s[t] = '9';
      s[k]--;
    }
  }
  while (s[0]) {
    k = 2 - q[0][s[0]].v;
    ans[++tot].ty = 2;
    ans[tot].len = q[0][s[0]].len;
    for (t = 0; t < ans[tot].len; t++) ans[tot].s[t] = q[0][s[0]].s[t];
    ans[tot].c[0] = f[k][f[k][0]];
    s[0]--;
    f[k][0]--;
  }
  printf("%d\n", tot);
  for (i = 1; i <= tot; i++) {
    if (ans[i].ty == 1)
      printf("move %d %d\n", ans[i].c[0], ans[i].c[1]);
    else {
      printf("move ");
      for (t = 0; t < ans[i].len; t++) printf("%c", ans[i].s[t]);
      printf(" %d\n", ans[i].c[0]);
    }
  }
  return 0;
}
