#include <bits/stdc++.h>
struct pnt {
  int x, y;
  pnt(int x = 0, int y = 0) : x(x), y(y) {}
} ana[20020], anb[20020];
int ca, cb, n;
int a[1010][1010], b[1010][1010];
void runa(int st, int en) {
  int md = (st + en) >> 1, i, j, k;
  if (!a[1][md]) {
    for (i = md - 1; i >= st; i--)
      if (a[1][i]) break;
    for (j = md + 1; j <= en; j++)
      if (a[1][j]) break;
    while (1) {
      for (k = i + 1; k < j; k++)
        if (a[i][k] && a[k][j]) break;
      ana[++ca] = pnt(i, j);
      a[j][i] = a[i][j] = 0;
      a[k][1] = a[1][k] = 1;
      if (k == md)
        break;
      else if (k > md)
        j = k;
      else
        i = k;
    }
  }
  if (st + 1 < md) runa(st, md);
  if (md + 1 < en) runa(md, en);
}
void runb(int st, int en) {
  int md = (st + en) >> 1, i, j, k;
  if (!b[1][md]) {
    for (i = md - 1; i >= st; i--)
      if (b[1][i]) break;
    for (j = md + 1; j <= en; j++)
      if (b[1][j]) break;
    while (1) {
      for (k = i + 1; k < j; k++)
        if (b[i][k] && b[k][j]) break;
      anb[++cb] = pnt(1, k);
      b[i][j] = b[i][j] = 0;
      b[k][1] = b[1][k] = 1;
      if (k == md)
        break;
      else if (k > md)
        j = k;
      else
        i = k;
    }
  }
  if (st + 1 < md) runb(st, md);
  if (md + 1 < en) runb(md, en);
}
int main() {
  scanf("%d", &n);
  for (int i = 3, x, y; i < n; i++) {
    scanf("%d %d", &x, &y);
    a[x][y] = 1;
    a[y][x] = 1;
  }
  for (int i = 3, x, y; i < n; i++) {
    scanf("%d %d", &x, &y);
    b[x][y] = 1;
    b[y][x] = 1;
  }
  for (int i = 1; i < n; i++) {
    a[i][i + 1] = b[i][i + 1] = 1;
    a[i + 1][i] = b[i + 1][i] = 1;
  }
  a[1][n] = b[1][n] = 1;
  a[n][1] = b[n][1] = 1;
  runa(2, n);
  runb(2, n);
  printf("%d\n", ca + cb);
  for (int i = 1; i <= ca; i++) printf("%d %d\n", ana[i].x, ana[i].y);
  for (int i = cb; i; i--) printf("%d %d\n", anb[i].x, anb[i].y);
  return 0;
}
