#include <bits/stdc++.h>
using namespace std;
inline int read() {
  int f = 1, ans = 0;
  char c = getchar();
  while (c < '0' || c > '9') {
    if (c == '-') f = -1;
    c = getchar();
  }
  while (c >= '0' && c <= '9') {
    ans = ans * 10 + c - '0';
    c = getchar();
  }
  return f * ans;
}
const int MAXN = 1e3 + 11;
int E[MAXN][MAXN], N, tmp[MAXN], Num[MAXN];
vector<pair<int, int> > Ans[2];
bool check() {
  for (int i = 3; i < N; i++)
    if (!E[1][i]) return 0;
  return 1;
}
pair<int, int> Do(int X, int Y) {
  memset(Num, 0, sizeof(Num));
  for (int i = 1; i <= N; i++)
    if (E[X][i]) Num[i] = 1;
  for (int i = 2; i <= N; i++)
    if (E[Y][i] && Num[i]) {
      E[X][Y] = E[Y][X] = 0;
      E[1][i] = E[i][1] = 1;
      return make_pair(1, i);
    }
}
void solve(int opt) {
  for (int i = 1; i <= N - 1; i++) E[i][i + 1] = E[i + 1][i] = 1;
  E[1][N] = E[N][1] = 1;
  while (!check()) {
    tmp[0] = 0;
    for (int i = 2; i <= N; i++)
      if (E[1][i]) tmp[++tmp[0]] = i;
    for (int i = 2; i <= tmp[0]; i++) {
      if (tmp[i] - tmp[i - 1] > 1) {
        pair<int, int> p = Do(tmp[i - 1], tmp[i]);
        if (!opt)
          Ans[0].push_back(make_pair(tmp[i - 1], tmp[i]));
        else
          Ans[1].push_back(p);
        break;
      }
    }
  }
  return;
}
int main() {
  N = read();
  for (int i = 1; i <= N - 3; i++) {
    int u = read(), v = read();
    E[u][v] = E[v][u] = 1;
  }
  solve(0);
  memset(E, 0, sizeof(E));
  for (int i = 1; i <= N - 3; i++) {
    int u = read(), v = read();
    E[u][v] = E[v][u] = 1;
  }
  solve(1);
  printf("%lu\n", Ans[0].size() + Ans[1].size());
  for (int i = 0; i < Ans[0].size(); i++)
    printf("%d %d\n", Ans[0][i].first, Ans[0][i].second);
  for (int i = Ans[1].size() - 1; i >= 0; i--)
    printf("%d %d\n", Ans[1][i].first, Ans[1][i].second);
}
