#include <bits/stdc++.h>
using namespace std;
const int N = 1010;
int n, cnt1, cnt2;
bool edge1[N][N], edge2[N][N];
struct node {
  int from, to;
} op1[20010], op2[20010];
int main() {
  scanf("%d", &n);
  for (int i = 1, u, v; i <= n - 3; i++) {
    scanf("%d%d", &u, &v);
    edge1[u][v] = 1;
    edge1[v][u] = 1;
  }
  for (int i = 1, u, v; i <= n - 3; i++) {
    scanf("%d%d", &u, &v);
    edge2[u][v] = 1;
    edge2[v][u] = 1;
  }
  for (int i = 1; i <= n; i++) {
    edge1[i][i % n + 1] = 1;
    edge1[i % n + 1][i] = 1;
    edge2[i][i % n + 1] = 1;
    edge2[i % n + 1][i] = 1;
  }
  for (int i = 2; i <= n; i++) {
    while (!edge1[1][i]) {
      int su = i - 1, sv, eu = 0, ev;
      for (int j = i + 1; j <= n; j++)
        if (edge1[1][j]) {
          sv = j;
          break;
        }
      for (int k = 1; k <= n; k++)
        if (edge1[su][k] && edge1[sv][k]) {
          if (eu == 0)
            eu = k;
          else {
            ev = k;
            break;
          }
        }
      edge1[su][sv] = 0;
      edge1[sv][su] = 0;
      edge1[eu][ev] = 1;
      edge1[ev][eu] = 1;
      op1[++cnt1] = (node){su, sv};
    }
  }
  for (int i = 2; i <= n; i++) {
    while (!edge2[1][i]) {
      int su = i - 1, sv, eu = 0, ev;
      for (int j = i + 1; j <= n; j++)
        if (edge2[1][j]) {
          sv = j;
          break;
        }
      for (int k = 1; k <= n; k++)
        if (edge2[su][k] && edge2[sv][k]) {
          if (eu == 0)
            eu = k;
          else {
            ev = k;
            break;
          }
        }
      edge2[su][sv] = 0;
      edge2[sv][su] = 0;
      edge2[eu][ev] = 1;
      edge2[ev][eu] = 1;
      op2[++cnt2] = (node){eu, ev};
    }
  }
  printf("%d\n", cnt1 + cnt2);
  for (int i = 1; i <= cnt1; i++) printf("%d %d\n", op1[i].from, op1[i].to);
  for (int i = cnt2; i >= 1; i--) printf("%d %d\n", op2[i].from, op2[i].to);
  return 0;
}
