#include <bits/stdc++.h>
using namespace std;
const int NR = 1005;
const int MR = 20005;
void Min(int& x, int y) { x = min(x, y); }
void Max(int& x, int y) { x = max(x, y); }
int n;
int tot[2];
struct Nd {
  int a, b;
} ans[2][MR];
int d[NR][NR];
void Init() {
  memset(d, 0, sizeof(d));
  for (int i = 1; i < n; i++) d[i][i + 1] = d[i + 1][i] = 1;
  d[1][n] = d[n][1] = 1;
}
void rev(int a, int b, int f) {
  int x = 0, y = 0;
  for (int i = a;; i = (i == 1) ? n : (i - 1)) {
    if (i == a) continue;
    if (i == b) break;
    if (d[i][b]) {
      x = i;
      break;
    }
  }
  for (int i = a;; i = (i == n) ? 1 : i + 1) {
    if (i == a) continue;
    if (i == b) break;
    if (d[i][b]) {
      y = i;
      break;
    }
  }
  d[a][b] = d[b][a] = 0;
  d[x][y] = d[y][x] = 1;
  if (f) {
    tot[f]++;
    ans[f][tot[f]].a = x, ans[f][tot[f]].b = y;
  } else {
    tot[f]++;
    ans[f][tot[f]].a = a, ans[f][tot[f]].b = b;
  }
}
void solve(int x) {
  for (int i = 2; i <= n; i++)
    for (int j = n; j >= 2; j--) {
      if ((n + j - i) % n == 1 || (n + i - j) % n == 1) continue;
      if (d[i][j] && i != j) rev(i, j, x);
    }
}
void print() {
  printf("%d\n", tot[0] + tot[1]);
  for (int i = 1; i <= tot[0]; i++) printf("%d %d\n", ans[0][i].a, ans[0][i].b);
  for (int i = tot[1]; i >= 1; i--) printf("%d %d\n", ans[1][i].a, ans[1][i].b);
}
int read() {
  int x = 0, f = 1;
  char ch = getchar();
  while (ch > '9' || ch < '0') {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (ch <= '9' && ch >= '0') {
    x = (x << 3) + (x << 1) + (ch ^ 48);
    ch = getchar();
  }
  return x * f;
}
int main() {
  n = read();
  Init();
  for (int i = 1; i <= n - 3; i++) {
    int x = read(), y = read();
    d[x][y] = d[y][x] = 1;
  }
  solve(0);
  Init();
  for (int i = 1; i <= n - 3; i++) {
    int x = read(), y = read();
    d[x][y] = d[y][x] = 1;
  }
  solve(1);
  print();
  return 0;
}
