#include <bits/stdc++.h>
using namespace std;
const int N = 1002;
int a[N], b[N], x, y, tot1, tot2, n, m, tot, ansx[N << 1], ansy[N << 1];
bool edge[N][N][2];
int read() {
  char x = getchar();
  while (x < 48 || x > 57) x = getchar();
  int ans = 0;
  while (x >= 48 && x <= 57) {
    ans = (ans << 1) + (ans << 3) + (x ^ 48);
    x = getchar();
  }
  return ans;
}
void solve(int xx, int yy, int opt) {
  int zz;
  for (int i = xx + 1; i < yy; i++) {
    if (edge[xx][i][opt] && edge[yy][i][opt]) {
      zz = i;
      break;
    }
  }
  if (opt) {
    tot++;
    ansx[tot] = xx;
    ansy[tot] = yy;
  }
  if (zz - xx > 1) solve(xx, zz, opt);
  if (yy - zz > 1) solve(zz, yy, opt);
  if (!opt) {
    tot++;
    ansx[tot] = 1;
    ansy[tot] = zz;
  }
}
void init() {
  m = n - 3;
  a[1] = b[1] = 2;
  tot1 = tot2 = 1;
  for (int i = 1; i < n; i++)
    edge[i][i + 1][0] = edge[i + 1][i][0] = edge[i][i + 1][1] =
        edge[i + 1][i][1] = true;
  edge[1][n][1] = edge[n][1][1] = edge[1][n][0] = edge[n][1][0] = true;
}
int main() {
  n = read();
  init();
  for (int i = 1; i <= m; i++) {
    x = read();
    y = read();
    edge[x][y][1] = edge[y][x][1] = true;
    if (x != 1 && y != 1) continue;
    if (x != 1) swap(x, y);
    a[++tot1] = y;
  }
  sort(a + 1, a + tot1 + 1);
  a[++tot1] = n;
  for (int i = 2; i <= tot1; i++) {
    if (a[i] - a[i - 1] > 1) solve(a[i - 1], a[i], 1);
  }
  for (int i = 1; i <= m; i++) {
    x = read();
    y = read();
    edge[x][y][0] = edge[y][x][0] = true;
    if (x != 1 && y != 1) continue;
    if (x != 1) swap(x, y);
    b[++tot2] = y;
  }
  sort(b + 1, b + tot2 + 1);
  b[++tot2] = n;
  for (int i = 2; i <= tot2; i++) {
    if (b[i] - b[i - 1] > 1) solve(b[i - 1], b[i], 0);
  }
  printf("%d\n", tot);
  for (int i = 1; i <= tot; i++) printf("%d %d\n", ansx[i], ansy[i]);
  return 0;
}
